SQLSTATE [HY000] Ошибка в Laravel: не удается добавить внешний ключ

Я попробовал почти все ответы здесь, мои миграции в порядке, я установил движок на «InnoDB», я установил user_types_id без подписи. Я думаю, что что-то упустил, я не могу перенести это. (Я был в состоянии вручную добавить FK из phpMyAdmin, хотя).
мой user-types созданы до того, как будет создана моя таблица пользователей, я гарантировал это 🙂
Миграции:

Schema::create('user-types',function(Blueprint $table){
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('name');
$table->timestamps();
});

и таблица пользователей:

  // I think I saw this somewhere, too
Schema::enableForeignKeyConstraints();

Schema::create('users',function(Blueprint $table){
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('name');
$table->string('password');
$table->integer('user_types_id')->unsigned()->nullable();
$table->timestamps();
});
Schema::table('users',function(Blueprint $table){
// When I index it I am able to manually add fk from
// phpMyAdmin
$table->index('user_types_id');
$table->foreign('user_types_id')->references('id')->on('user_types');
});

1

Решение

В определении схемы есть различия в именах.

Вы создаете таблицу с Schema::create('user-types',function(.... где имя таблицы user-types но когда вы настраиваете внешний ключ, вы передаете user_types

Так что сделайте их такими, какие бы они ни были правильными Или user-types или же user_types и тогда это будет работать.

1

Другие решения

Вы можете дать ссылку, как это также

Schema::create('users',function(Blueprint $table){
$table->engine = 'InnoDB';
$table->increments('id');
$table->foreign('user_types_id')->references('id')->on('user-types')->onDelete('cascade');
$table->string('name');
$table->string('password');
$table->integer('user_types_id')->nullable();
$table->timestamps();
});

Schema::enableForeignKeyConstraints(); //Remove this its not require,
0

Я думаю, тебе нужно написать,

Schema::disableForeignKeyConstraints(); // disable foreign key checks while creating tables which are dependant on each other

в верхней части определения схемы, где вы столкнулись с этой проблемой, она должна работать.

0
По вопросам рекламы [email protected]