MySql错误1064 - 使用MySQL WorkBench创建

3
我使用MySQL WorkBench创建了这个。
CREATE  TABLE IF NOT EXISTS `bakasura_new`.`cities` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(255) NOT NULL COMMENT 'City Name' ,
  `short_name` VARCHAR(255) NOT NULL COMMENT 'Short Name' ,
  `country_id` INT(11) UNSIGNED NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_cities_countries` (`country_id` ASC) ,
ENGINE = InnoDB;

我遇到了这个错误

MySQL 说:文档

#1064 - SQL语法错误;请查看您的MySQL服务器版本相应的手册,以获取正确的语法使用方法,在第8行附近出现了“= InnoDB”的错误。

2个回答

6

这里有个悬挂逗号:

INDEX `fk_cities_countries` (`country_id` ASC) ,

而且你还缺少一个右括号:

CREATE  TABLE IF NOT EXISTS `bakasura_new`.`cities` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(255) NOT NULL COMMENT 'City Name' ,
  `short_name` VARCHAR(255) NOT NULL COMMENT 'Short Name' ,
  `country_id` INT(11) UNSIGNED NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_cities_countries` (`country_id` ASC)
) ENGINE = InnoDB;

1
@Harsha M V:我刚试了一下,运行成功了。请注意,我去掉了一个逗号并添加了一个闭括号。 - Daniel Vassallo

1

最后一个)缺失了。

INDEX `fk_cities_countries` (`country_id` ASC) )

3
@Harsha:Workbench创建了哪些类型的约束条件?你能举个例子吗? - Daniel Vassallo
创建一个表,如果不存在则创建名为“areas”的表。该表包含以下字段:id(自动递增的11位无符号整数),name(255字符长度的非空字符串),slug(255字符长度的可选字符串),zipcode(11位整数类型的可选字段),latitude(255字符长度的可选字符串),longitude(255字符长度的可选字符串)和city_id(11位无符号整数不为空)。主键是id,外键约束是将city_id作为参考cities表中的id。删除时不执行任何操作,更新时也不执行任何操作。使用InnoDB引擎。在“areas”表上创建一个名为“fk_areas_cities1”的索引,按升序排序city_id. - Harsha M V
@Harsha:看起来你想要移除city_id上的外键。我认为你可以从EER图中移除这个外键:http://dev.mysql.com/doc/workbench/en/wb-relationship-tools.html。只需要删除链接即可。通过手动移除该约束,你实际上是在移除链接上的约束。 - Daniel Vassallo
但是我想要这两个表之间的链接,否则我就无法正确地将它们连接起来,对吧? - Harsha M V
@Harsha:即使没有外键约束,您仍然可以使用JOIN在查询中“链接”表。试一试。 - Daniel Vassallo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接