【发布时间】:2023-02-06 03:34:58
【问题描述】:
我有这个迁移,我第一次创建了一个外键:
Schema::table('user_plays_quizzes', function (Blueprint $table) {
$table->bigInteger('quiz_id')->unsigned()->change();
$table->foreign('quiz_id')->references('id')->on('quizzes');
});
现在我有一个新的迁移,我想将这个外键更新为nullable(true)和nullOnDelete()。
试了很多次,总是报错,感觉最接近的做法是:
Schema::table('user_plays_quizzes', function (Blueprint $table) {
$table->bigInteger('quiz_id')->unsigned()->nullable(true)->change();
$table->foreign('quiz_id')->references('id')->on('quizzes')->nullOnDelete();
});
可悲的是它也不起作用:
SQLSTATE[HY000]: General error: 1005 Can't create table `d039e62e`.`user_plays_quizzes` (errno: 121
"Duplicate key on write or update") (SQL: alter table `user_plays_quizzes` add constraint `user_plays_quizzes_quiz_id_foreign` for
eign key (`quiz_id`) references `quizzes` (`id`) on delete set null)
不知道如何解决它。我什至不能放下钥匙并重新创建它们。也许有人知道我如何通过迁移更新它
【问题讨论】: