Laravel 5.1 Migración y siembra No se puede truncar una tabla referenciada en una restricción de clave externa
Estoy tratando de ejecutar la migración (ver más abajo) y sembrar la base de datos, pero cuando ejecuto
php artisan migrate --seed
Me sale este error:
Migration table created successfully.
Migrated: 2015_06_17_100000_create_users_table
Migrated: 2015_06_17_200000_create_password_resets_table
Migrated: 2015_06_17_300000_create_vehicles_table
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table
referenced in a foreign key constraint (`app`.`vehicles`, CONSTRAINT `vehic
les_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `app`.`users` (`id`
)) (SQL: truncate `users`)
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table
referenced in a foreign key constraint (`app`.`vehicles`, CONSTRAINT `vehic
les_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `app`.`users` (`id`
))
Busqué lo que se supone que significa este error, y también encontréejemplos de otras personas que se encuentran con el mismo problema, incluso solo relacionadas con el usoMySQL, y sus soluciones, pero aplicando:
DB::statement('SET FOREIGN_KEY_CHECKS=0;'); and
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
Dentro de down () no parece funcionar y cuando ejecuto describe en MySQL las tablas se ven bien.
Las migraciones se nombran correctamente para asegurarse de que la tabla de usuarios se migre primero, y luego los vehículos para que se pueda aplicar la clave externa, y las tablas que se configuran correctamente sugieren que las migraciones se ejecutaron, pero luego se produce el error. Dejé caer y recreé el DB y lo intenté nuevamente y es el mismo resultado. Tampoco entiendo por qué intenta truncar en la primera migración y semilla de la base de datos, no hubiera pensado que eso ocurriría cuando intentara ejecutar php artisan migrate: refresh --seed.
// 2015_06_17_100000_create_users_table.php
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('username', 60)->unique();
$table->string('email', 200)->unique();
$table->string('password', 255);
$table->string('role')->default('user');
$table->rememberToken();
$table->timestamps();
});
}
}
public function down()
{
Schema::drop('users');
}
// 2015_06_17_300000_create_vehicles_table.php
class CreateVehiclesTable extends Migration
{
public function up()
{
Schema::create('vehicles', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('make');
$table->string('model');
$table->string('year');
$table->string('color');
$table->string('plate');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users');
});
}
}
public function down()
{
Schema::drop('vehicles');
}