【发布时间】:2011-08-11 02:45:48
【问题描述】:
我用 MySQL workbench 在表中添加外键,但出现了一些奇怪的错误,这是 SQL 语句:
ALTER TABLE `tansung`.`Declaration` ADD COLUMN `goodsId` INT(11) NOT NULL AFTER `declarationId` ,
ADD CONSTRAINT `goodsId`
FOREIGN KEY (`goodsId` )
REFERENCES `tansung`.`Goods` (`goodsId` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `goodsId` (`goodsId` ASC) ;
当我点击应用时,惊喜就出来了!
ERROR 1005: Can't create table 'tansung.#sql-1b10_1' (errno: 150)
SQL Statement:
ALTER TABLE `tansung`.`Declaration` ADD COLUMN `goodsId` INT(11) NOT NULL AFTER `declarationId` ,
ADD CONSTRAINT `goodsId`
FOREIGN KEY (`goodsId` )
REFERENCES `tansung`.`Goods` (`goodsId` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD INDEX `goodsId` (`goodsId` ASC)
ERROR: Error when running failback script. Details follow.
ERROR 1050: Table 'Declaration' already exists
SQL Statement:
CREATE TABLE `Declaration` (
`declarationId` int(11) NOT NULL,
PRIMARY KEY (`declarationId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我在逻辑上找不到任何错误,甚至无法理解错误,请给我帮助。
【问题讨论】:
-
这个错误似乎不言自明;您正在尝试创建一个名为
Declaration的表,该表已经存在... -
确保您没有在一个窗口中运行所有 SQL 代码。您似乎正在运行 ALTER TABLE 代码,然后是 CREATE TABLE 代码...确保您只运行 ALTER TABLE 代码以防止出现该错误。
-
@Brian Driscoll 真正的错误出现在代码块的顶部
ERROR 1005: Can't create table 'tansung.#sql-1b10_1' (errno: 150) -
我只是运行“alter”操作,从不“creat”操作,(也许工作台添加它?我很困惑)。
-
我也有同样的问题,直接在服务器上测试后,我只能向你保证它不是工作台。
标签: mysql foreign-keys mysql-error-1005