DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。
当前位置:首页 > MySQL > 常见问题

MySqlinnodb出错:ErrorCode:1005Can'tcreatetable

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;
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号