У меня есть следующая схема таблицы:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('account_type')->default('1,1,0');
$table->string('theme')->default('light');
$table->string('unique_id')->nullable();
$table->string('avatar')->nullable();
$table->rememberToken();
$table->timestamps();
$table->unsignedBigInteger('plan_id');
$table->foreign('plan_id')->references('id')->on('plans');
$table->unique('email');
});
Когда я запускаю миграцию, происходит сбой с ошибкой:
errno: 150 "Неправильно сформировано ограничение внешнего ключа"
Если я удалю внешний ключ, он все равно не будет работать.
Это сработает, если я изменю имя таблицы с 'users' на что-то еще, но потомпроизойдет сбой, если я запустлю его снова (требуя изменения имени таблицы).
Вот схема для таблицы, на которую есть ссылка, эта миграция также выполняется перед миграцией пользователей.
Schema::create('plans', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name')->unique();
$table->float('cost', 8, 2)->nullable();
$table->integer('free_trial');
$table->string('renewal_rate');
$table->string('features');
$table->string('stripe_plan');
$table->boolean('featured')->default(true);
$table->string('permission');
$table->timestamps();
});
Потратив несколько дней, пытаясь решить эту проблему, все, кажется, указывают на то, что bigIncrements
/ unsignedBigIncrements
совпадает с опечатками в именах столбцов. У меня, похоже, нет этой проблемы ..