Извините за поздний ответ Есть две ситуации, когда эта ошибка может быть выдана
Например, у меня есть такие таблицы, как posts, authors
А вот моя таблица post
Миграция
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->unsignedInteger('author_id');
$table->foreign('author_id')->references('id')->on('authors')->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}
и вот моя authors
миграция таблицы
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAuthorsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('authors', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('authors');
}
}
Situation 1:
теперь, если миграция таблицы posts
выполняется до миграции authors
таблицы, это может привести к ошибке
Ситуация 2:
в некоторых случаях, если вы пропустите unsigned
, может выдаться ошибка
Solution1:
, используйте
$table->unsignedInteger('speciality_id');
$table->unsignedInteger('speciality_id');
$table->foreign('author_id')->references('id')->on('specialities')->onDelete('cascade');
вместо этого
$table->integer('speciality_id')->unsigned()->nullable();
$table->foreign('speciality_id')->references('id')->on('specialities')->onDelete('cascade');
, если это снова не удается, используйте это
try composer dumpautoload
adn, тогда Schema :: disableForeignKeyConstraints ();
В начале миграции
ив конце
Schema :: enableForeignKeyConstraints ();
например: ваша миграция может выглядеть как
public function up()
{
Schema::disableForeignKeyConstraints();
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
Schema::enableForeignKeyConstraints();
}
и, если выдает ту же ошибку, пожалуйста, приложите ошибкуСнимок экрана и комментарий ниже
Надеюсь, это поможет