Я пытаюсь добавить ограничение внешнего ключа в мою таблицу вопросов, но когда я запускаю php artisan migrate, я получаю следующую ошибку:
SQLSTATE [HY000]: общая ошибка: 1215 Невозможно добавить ограничение внешнего ключа (SQL: изменить таблицу questions
добавить ограничение questions_best_answer_id_foreign
ссылки на внешний ключ (best_answer_id
) answers
(id
) при удалении SET NULL )
Методы «вверх» и «вниз» в моем «add_foreign_best_answer_id_to_questions_table.php»
public function up()
{
Schema::table('questions', function (Blueprint $table) {
//Define the foreign key
$table->foreign('best_answer_id')
->references('id')
->on('answers')
->onDelete('SET NULL');
});
}
public function down()
{
Schema::table('questions', function (Blueprint $table) {
$table->dropForeign(['best_answer_id']);
});
}
}
Мой ответ Модель
public static function boot()
{
parent::boot();
static::created(function ($answer){
$answer->question->increment('answers_count');
});
static::deleted(function($answer){
$answer->question->decrement('answers_count');
});
}
Я пытаюсь перейти на базу данных, чтобы создать FK в таблице ответов, но я получаю сообщение об ошибке выше. Я также преобразовал всю свою базу данных, чтобы использовать движок InnoDB.
Есть ли ошибки в моем коде?
Спасибо!