【问题标题】:MySQL Workbench Error 1064MySQL 工作台错误 1064
【发布时间】:2015-11-09 11:12:11
【问题描述】:

大家!我是 MySQL 的新手。我使用 Workbench 工具创建了一个新模型(我的意思是,我自己没有编写任何代码字符串)。 当尝试对其进行正向工程时,我得到:

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 'COMMENT '')
ENGINE = InnoDB' at line 8
SQL Code:
    -- -----------------------------------------------------
    -- Table `university`.`CITY`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `university`.`CITY` (
      `ID_CITY` INT NOT NULL COMMENT '',
      `CNAME` TEXT(15) NULL COMMENT '',
      `POPULATION` INT NULL COMMENT '',
      PRIMARY KEY (`ID_CITY`)  COMMENT '')
    ENGINE = InnoDB

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

 Fetching back view definitions in final form.
 Nothing to fetch

此外,当尝试对默认 Workbench 模型“sakila_full”进行转发工程时,我得到了同样的结果:

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 'COMMENT '',
INDEX `idx_actor_last_name` (`last_name` ASC)  COMMENT '')
ENGINE ' at line 9
SQL Code:
    -- -----------------------------------------------------
    -- Table `sakila`.`actor`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `sakila`.`actor` (
      `actor_id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '',
      `first_name` VARCHAR(45) NOT NULL COMMENT '',
      `last_name` VARCHAR(45) NOT NULL COMMENT '',
      `last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '',
      PRIMARY KEY (`actor_id`)  COMMENT '',
      INDEX `idx_actor_last_name` (`last_name` ASC)  COMMENT '')
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8

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

 Fetching back view definitions in final form.
Could not get definition for sakila.customer_list from server
Could not get definition for sakila.film_list from server
Could not get definition for sakila.nicer_but_slower_film_list from server
Could not get definition for sakila.staff_list from server
Could not get definition for sakila.sales_by_store from server
Could not get definition for sakila.sales_by_film_category from server
Could not get definition for sakila.actor_info from server
7 views were read back.

提前致谢!

【问题讨论】:

  • 当你定义了一个 SET/ENUM 并且没有填充它时也可能出现错误

标签: mysql workbench


【解决方案1】:

从所有 INDEX 中删除“VISIBLE”和“INVISIBLE”字词

【讨论】:

    【解决方案2】:

    嗯,最大的问题是 Mysql Workbench 在使用“Forward Engineer”或“Synchronize Model”时添加了自己的索引 cmets 生成错误

    我使用6.0版本时不存在这个问题。

    【讨论】:

      【解决方案3】:

      看来您对COMMENT 字符串的使用有点过火了。根据the MySQL CREATE TABLE syntaxCOMMENT 属性只允许在列定义上。这意味着它对您在 CREATE 语句末尾附近列出的 INDEXPRIMARY KEY 定义无效。

      COMMENT '' 不是必需的,可以完全省略,特别是因为您将它们留空。否则,它们将用于列定义上的一些额外的人类可读元数据。

      要使用您所拥有的,请从索引和主键定义中删除 COMMENT 属性。

      CREATE TABLE IF NOT EXISTS `university`.`CITY` (
        `ID_CITY` INT NOT NULL COMMENT '',
        `CNAME` TEXT(15) NULL COMMENT '',
        `POPULATION` INT NULL COMMENT '',
        -- No COMMENT on PK
        PRIMARY KEY (`ID_CITY`)
      ) ENGINE = InnoDB;
      
      CREATE TABLE IF NOT EXISTS `sakila`.`actor` (
        `actor_id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '',
        `first_name` VARCHAR(45) NOT NULL COMMENT '',
        `last_name` VARCHAR(45) NOT NULL COMMENT '',
        `last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '',
        -- No COMMENT on PK or INDEX
        PRIMARY KEY (`actor_id`),
        INDEX `idx_actor_last_name` (`last_name` ASC)
      ) ENGINE = InnoDB
        DEFAULT CHARACTER SET = utf8;
      

      或没有任何空白的整个事情COMMENTs:

      CREATE TABLE IF NOT EXISTS `university`.`CITY` (
        `ID_CITY` INT NOT NULL COMMENT 'A comment that is not blank!',
        `CNAME` TEXT(15) NULL,
        `POPULATION` INT NULL,
        PRIMARY KEY (`ID_CITY`)
      ) ENGINE = InnoDB;
      

      (其他表相同)

      MySQL 通常非常擅长使用错误消息直接将您指向语法错误的来源:

      查看与您的 MySQL 服务器版本相对应的手册,了解在 'COMMENT'' 附近使用的正确语法),

      除了出现在语句末尾的错误会有点模棱两可之外,使用 near 的正确语法将准确地告诉你哪里出了问题。在上述情况下,COMMENT '') 应该将您定向到唯一的COMMENT 属性,后跟),这是PRIMARY KEY 的属性。从那里,检查手册(上面链接)以了解语句每个部分中的合法语法。

      【讨论】:

      • 非常感谢!我会试试这个:)
      • @Kleeo 太好了,如果您遇到任何问题,请告诉我们,欢迎使用 Stack Overflow。如果您还没有,请务必take the tour
      猜你喜欢
      • 2019-03-08
      • 2019-05-04
      • 2019-04-01
      • 2011-02-11
      • 2015-07-03
      • 1970-01-01
      • 2017-10-19
      • 2016-05-28
      • 2012-01-27
      相关资源
      最近更新 更多