Во-первых, я использую 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)