Laravel Migration:外键约束不正确

时间:2017-07-14 08:46:33

标签: php mysql laravel

我正在使用迁移将字段更改为nullable(),使用以下代码。

$table->integer('recipe_id')->nullable()->change();    

但是我收到了以下错误。

SQLSTATE[HY000]: General error: 1025 Error on rename of './blackfisk/#sql-2
2d_a' to './blackfisk/preparations' (errno: 150 "Foreign key constraint is
incorrectly formed") (SQL: ALTER TABLE preparations CHANGE recipe_id recipe
_id INT DEFAULT NULL)

我尝试使用

将外键检查设置为0
    \DB::statement('SET FOREIGN_KEY_CHECKS=0');

但它给出了同样的错误。当我尝试在Sequel Pro中运行查询时,我也会使用以下查询获得此错误。

SET FOREIGN_KEY_CHECKS = 0;
ALTER TABLE preparations CHANGE recipe_id recipe_id INT DEFAULT NULL;
SET FOREIGN_KEY_CHECKS = 1;

任何想法如果我在这里遗漏了什么?谢谢!

1 个答案:

答案 0 :(得分:5)

您应该创建unsignedInteger

$table->UnsignedInteger('recipe_id')->nullable()->change();    

我希望这会有所帮助