«Общая ошибка: 1 несоответствие внешнего ключа» в «dropColumn» в Laravel - PullRequest
0 голосов
/ 25 января 2020

Во-первых, я использую SQLite , и у меня есть foreign_key_constraints = TRUE в моем config->database->sqlite файле.

У меня есть 4 таблицы, которые все созданы с моим Laravel миграции.

  • пользователи
  • события
  • event_user
  • event_logs

create_users_table

$table->uuid('id')->unique();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();

create_events_table

$table->uuid('id')->unique();
$table->string('name');
$table->dateTimeTz('startDateTime');
$table->dateTimeTz('endDateTime');
$table->integer('min_participants')->nullable();
$table->integer('max_participants')->nullable();
$table->timestamps();

create_event_user_table

$table->uuid('event_id');
$table->uuid('user_id');
$table->timestamps();

$table->foreign('event_id')
    ->references('id')->on('events')
    ->onDelete('cascade');

$table->foreign('user_id')
    ->references('id')->on('users')
    ->onDelete('cascade');

create_event_logs_table

$table->uuid('id')->unique();
$table->dateTimeTz('dateTime');
$table->uuid('user_id');
$table->uuid('event_id');
$table->float('value', 12, 2);
$table->timestamps();

$table->foreign('event_id')
    ->references('id')->on('events')
    ->onDelete('cascade');

$table->foreign('user_id')
    ->references('id')->on('users')
    ->onDelete('cascade');

Все они работают нормально, но когда я изменяю таблицу users, я получаю ошибку General error: 1 foreign key mismatch - "event_logs" referencing "users".

update_users_table

$table->string('family_name')->nullable()->after('name');
$table->string('given_name')->nullable()->after('name');

$table->dropColumn('name');

Если я закомментирую $table->dropColumn('name'), то миграции будут работать нормально.

Полная ошибка:

Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1 foreign key mismatch - "event_logs" referencing "users" (SQL: INSERT INTO users (id, email, email_verified_at, password, remember_token, created_at, updated_at) SELECT id, email, email_verified_at, password, remember_token, created_at, updated_at FROM __temp__users)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...