Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我的SQL外键约束错误_Mysql - Fatal编程技术网

Mysql 我的SQL外键约束错误

Mysql 我的SQL外键约束错误,mysql,Mysql,我使用MySQL数据库作为我的应用程序的后端。我在玩数据库,几天前我做了一些错误的事情,现在我不能在我的DB表上应用外键。 我有两张桌子shoplocation和pizaorderdetail。在Pizzaordetail中,我将shoplocation的id作为外键传递。我得到以下错误。表中已包含数据。早些时候,我在pizzaorderdetail上有外键约束,但不知何故它被删除了。请帮助我解决此错误 执行: ALTER TABLE order.pizzaorderdetail 添加索引FK_

我使用MySQL数据库作为我的应用程序的后端。我在玩数据库,几天前我做了一些错误的事情,现在我不能在我的DB表上应用外键。 我有两张桌子shoplocation和pizaorderdetail。在Pizzaordetail中,我将shoplocation的id作为外键传递。我得到以下错误。表中已包含数据。早些时候,我在pizzaorderdetail上有外键约束,但不知何故它被删除了。请帮助我解决此错误

执行: ALTER TABLE order.pizzaorderdetail 添加索引FK_idx LocationID ASC; ALTER TABLE order.pizzaorderdetail 添加约束FK 外键位置ID 参考订单。位置id 不删除任何操作 更新时不采取行动

操作失败:将SQL脚本应用于数据库时出错。 错误1452:无法添加或更新子行:外键约束失败。sql-714_31,约束FK外键位置id在删除时引用位置id更新时不操作不操作 SQL语句: ALTER TABLE order.pizzaorderdetail 添加约束FK 外键位置ID 参考订单。位置id 不删除任何操作
更新无操作时,您需要检查FK是否正常。当我收到这条消息时,我只是删除了我的FK,问题就解决了

根据手册:

当您尝试删除最后一个索引时,InnoDB会报告此错误 可以强制执行特定的引用约束

为了使用DML语句获得最佳性能,InnoDB需要一个索引 存在于外键列上,以便执行更新和删除操作 在父表上,可以轻松检查表中是否存在相应的行 孩子们坐在桌子上。MySQL会自动创建或删除此类索引 在需要时,作为创建表的副作用,创建索引和更改 表1.1.1.1报表

删除索引时,InnoDB会检查该索引是否用于 检查外键约束。如果出现以下情况,仍然可以删除索引: 还有另一个索引可以用来执行相同的操作 限制InnoDB阻止您删除可以删除的最后一个索引 强制执行特定的引用约束


通过禁用外键检查,然后应用约束并再次应用外键检查,我找到了临时解决方案。这是正确的方法吗?如果表中的数据正确,则是类型问题。尝试检查两个表中的id。相同类型、长度、无符号。。。。它们应该完全一样