Error Code: 1005 Can't create table (errno: 121)
这个是Innodb 创建外键的时候出现的问题
MySQL官方Error code解释:
原文链接:http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html
1005 (ER_CANT_CREATE_TABLE)
多半是外键的 DataType 不匹配
Reference: http://blog.mclaughlinsoftware.com/2010/01/30/decoding-1005-on-mysql/
http://sql-info.de/mysql/referential-integrity.html
可以通过 mysql> SHOW engine innodb STATUS;
来查看innodb的警告信息。
对于errno: 121
Reference: http://stackoverflow.com/questions/4412693/sql-error-code-1005-with-error-number-121
根据里面的解释,有以下几种原因
1、各个表的外键约束名有同名(Constraint/foreign key names are global to a database, so they cannot be reused in different tables)
2、以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上
3、主键名字在全数据库范围内不是唯一的
解决方法:检查外键约束名是否有重名的;各个表使用不同的外键约束名
还有一种文件就是 把外键约束 set null 然后删掉啦,可是没有把对应的数据删掉;这个时候又想重新添上外键约束;解决方法是把之前外键约束的数据删掉,然后再添加,如:
ALTER TABLE `pa`.`sl_tl_relation`
ADD CONSTRAINT `correlation2trade_level`
FOREIGN KEY (`TradeLevel` )
REFERENCES `pa`.`trade_level` (`TradeLevelId` )
ON DELETE NO ACTION
ON UPDATE NO ACTION;
相关推荐
但是,在修改字符集过程中可能会遇到“Error Code : 1071”的问题,这意味着键(Key)的总长度超过了最大允许值1000字节。在MySQL中,对于InnoDB存储引擎,主键的总长度限制在767字节内,具体取决于使用的字符集。...
在MySQL数据库操作中,有时会遇到“1366 Incorrect string value…”的错误提示,这通常是由于字符编码不匹配导致的。错误发生时,表明正在尝试插入的数据包含无法被当前数据库或表的字符集识别的字符。在Windows...
Create Table: CREATE TABLE `decimal_tb` ( `col1` decimal(10,0) DEFAULT NULL, `col2` decimal(5,2) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) ``` 2. 插入数据测试 接...
Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ...
CREATE TABLE `images` ( `id` int(11) NOT NULL AUTO_INCREMENT, `filename` varchar(255) NOT NULL, `upload_time` datetime DEFAULT CURRENT_TIMESTAMP, `path` varchar(255) NOT NULL, PRIMARY KEY (`id`) ...