首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

请教小弟我建的mysql外键错在哪里了啊

2012-05-04 
请问我建的mysql外键错在哪里了啊?我的sql语句:SQL codealter table personstory add constraint FK_Refer

请问我建的mysql外键错在哪里了啊?
我的sql语句

SQL code
alter table personstory add constraint FK_Reference_user_personstory foreign key (userID)      references user(userID) on delete restrict on update restrict;

错误提示:
Error Code : 1005
Can't create table '.\dep\#sql-3b8_1.frm' (errno: 121)

Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000

[解决办法]
语句没问题

mysql> create table a (userid int primary key);
Query OK, 0 rows affected (0.01 sec)

mysql> create table b (a int ,userid int);
Query OK, 0 rows affected (0.00 sec)

mysql> alter table b add constraint FK_Reference_user_personstory foreign key (userID)
-> references a(userID) on delete restrict on update restrict;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
[解决办法]
检查你的user表中的 (userID) 是不是主键? 字段的数据类型是否一致?
[解决办法]
应该是personstory表中的部分userID在user(userID)中找不到,所以导致建不了
[解决办法]
如果你的两个表是空的,那么着这个语句没有问题,如果有的在user 表中存在但是在父表中不存在,那么着语句会执行失败,插不进数据是因为在父表中该主键不存在,所以在子表插入会失败!

热点排行