Laravel 5
Ошибка Cannot add foreign key constraint в миграциях
Возникает при миграциях. Возможные причины:
- В одной из таблиц id - unsigned, в другой - нет. Надо бы добавить или убрать ->unsigned(); Команда ->increments(id) создает unsigned поле.
- Связь устанавливается раньше, чем таблица создается. Можно изменить название файла миграции.
- Движок (engine) у таблицы - MyISAM, который не поддерживает внешние ключи. Надо менять на InnoDB.
Иногда решением является разбиение кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public function up() { Schema::create('priorities', function($table) { $table->increments('id', true); $table->integer('user_id')->unsigned(); $table->string('name'); }); Schema::table('priorities', function($table) { $table->foreign('user_id')->references('id')->on('users'); }); } |
В редких случаях ошибка возникает из-за добавления нового столбца в непустую таблицы. Тогда, возможно, стоит добавить ->nullable().