【问题标题】:Creating a DOUBLE Field failed with Error 1064: MySQL创建 DOUBLE 字段失败并出现错误 1064:MySQL
【发布时间】:2013-09-23 12:48:29
【问题描述】:

我正在尝试建立一个数据库以了解有关 MySQL 中触发器的更多信息。

所以我用 mysql-workbench 创建了一个数据库模型。如果我尝试将模型与 mysql-server 同步,则会收到 1064 语法错误:

Executing SQL script in server
ERROR: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') NOT NULL ,
  PRIMARY KEY (`employee_id`, `accounts_id`) ,
  INDEX `fk_accountA' at line 4


CREATE  TABLE IF NOT EXISTS `pzedb`.`accountAmounts` (
  `employee_id` INT(11) NOT NULL ,
  `accounts_id` INT(11) NOT NULL ,
  `accountAmount` DOUBLE(11) NOT NULL ,
  PRIMARY KEY (`employee_id`, `accounts_id`) ,
  INDEX `fk_accountAmounts_employee1` (`employee_id` ASC) ,
  INDEX `fk_accountAmounts_accounts1` (`accounts_id` ASC) ,
  CONSTRAINT `fk_accountAmounts_employee1`
    FOREIGN KEY (`employee_id` )
    REFERENCES `pzedb`.`employee` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_accountAmounts_accounts1`
    FOREIGN KEY (`accounts_id` )
    REFERENCES `pzedb`.`accounts` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_swedish_ci

SQL script execution finished: statements: 11 succeeded, 1 failed

我试图将字段更改为 VARCHAR,我该怎么说它有效。我将其他字段更改为 DOUBLE 并得到相同的错误。

是有什么问题还是我太笨而无法使用工作台?

我的操作系统:Debian 7.1 MySQL:5.5.31-0+wheezy1 工作台:5.2.40 rev 8790

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    Double 不接受长度。所以在你的情况下它应该只是

    accountAmount DOUBLE NOT NULL
    

    对于整数,INT(11),不代表长度为11,仅当ZEROFILL0填充数字时使用,在DDL中指定选项。例如

    INT(4)    INT(4) ZEROFILL
    12           0012
    122          0122
    12222       12222
    

    【讨论】:

    • 似乎工作台中存在错误。我选择了没有长度或其他东西的 DOUBLE。谢谢你的回答,现在可以了。顺便提一句。我手动添加了此表以使其正常工作。
    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 2021-11-25
    • 2013-11-13
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 2021-04-15
    相关资源
    最近更新 更多