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

请问我建的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 表中存在但是在父表中不存在,那么着语句会执行失败,插不进数据是因为在父表中该主键不存在,所以在子表插入会失败!

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

相关文章:

你感兴趣的文章:

标签云: