关于mysql中设外键的问题,请各位高手帮忙看看!
altertableexpress_deliveryaddconstraintidFOREIGNkey(id)referencesdelivery(id);我用这个语句建...
alter table express_delivery add constraint id FOREIGN key(id) references delivery(id);我用这个语句建立外键时,它会出现一个提示框,内容是“SQL执行错误#1005,从数据库的响应:can't create table ',\liulinf\#sql-da8_4/frm' (errno:121)”这是错误框提示的内容,因为我前面用sql语句建过表,有一次它提示建过表不成功,出来的就是这框,但后来建表成功了,现在我建外键,它又出来了,关键是我只有上面的建外键的语句,没有建表语句,它为什么还是提示这样的错误呢,是怎么回事,高手们帮忙看下啊,谢谢!
展开
2个回答
展开全部
楼主你要知道,建外键的作用是使用外键所引用的表来约束所要用到该外键的表!
明白了外键的特性,再来看看这个问题.既然表都建起来了,那么问题肯定不是出在建表结构或者引用上。异常提示说违反约束规则.
分析你的问题,问题出在:
1.在你的航班表中并没有数据,这时候你往机票表中插入数据的时候并没有外键所参考的主键给你引用,这时候因为找不到所要参考的引用,约束规则生效,使你在没有主键参考的情况下不能往表中插入数据.
2.问题分析同上面,但是不同的是航班表中有数据,但是你机票表中插入数据的时候,外键的值并没有在航班表中存在,同样也会报相同的异常.
楼主在Java区也有个相同的问题。。。
明白了外键的特性,再来看看这个问题.既然表都建起来了,那么问题肯定不是出在建表结构或者引用上。异常提示说违反约束规则.
分析你的问题,问题出在:
1.在你的航班表中并没有数据,这时候你往机票表中插入数据的时候并没有外键所参考的主键给你引用,这时候因为找不到所要参考的引用,约束规则生效,使你在没有主键参考的情况下不能往表中插入数据.
2.问题分析同上面,但是不同的是航班表中有数据,但是你机票表中插入数据的时候,外键的值并没有在航班表中存在,同样也会报相同的异常.
楼主在Java区也有个相同的问题。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询