Php 如何在Laravel中将外键设置为nullable
我在日志表中设置了一个用户id,现在有一个问题,我有时需要将日志存储到非日志用户执行的操作中 当我运行此迁移时Php 如何在Laravel中将外键设置为nullable,php,mysql,laravel,Php,Mysql,Laravel,我在日志表中设置了一个用户id,现在有一个问题,我有时需要将日志存储到非日志用户执行的操作中 当我运行此迁移时 Schema::table('users_log', function (Blueprint $table) { $table->unsignedInteger('user_id')->nullable()->change(); }); 我犯了一个错误 [Illumb\Database\QueryException]SQLSTATE[
Schema::table('users_log', function (Blueprint $table) {
$table->unsignedInteger('user_id')->nullable()->change();
});
我犯了一个错误
[Illumb\Database\QueryException]SQLSTATE[HY000]:一般错误:
1832无法更改列“user_id”:在外键约束中使用
“users\u log\u user\u id\u foreign”(SQL:ALTER TABLE users\u log CHANGE user\u id
用户\u id INT无符号默认值(空)
您需要先删除FK约束:
$table->dropForeign(['user_id']);
然后修改柱并添加新的FK约束
另外,请确保在单独的Schema::table()
closures中执行此操作
您有一个外键约束,该约束不允许用户id中有空值。删除该约束,您应该会没事的。@naneri到底是什么不起作用?你是不是出了什么差错?您是否尝试过在一个
Schema::table()
闭包中删除FK,在另一个中修改列,并在另一个中添加另一个FK?我将尝试在不同的闭包中设置它们后,它是否起作用。非常感谢。请您在回答中注意外键约束删除应该在不同的闭包中。@naneri当然可以。添加。)