próbuję uruchomić migrację (patrz niżej) i nasion bazy danych, ale gdy uruchamiamlaravel 5,1 Migracja i sadzenie Nie można obciąć tabelę odwołuje się w klucz obcy
php artisan migrate --seed
otrzymuję ten błąd :
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`
))
Spojrzałem w górę, co ten błąd ma na myśli, a także znaleźć examples innych osób prowadzących do tego samego problemu, choćby związane z użyciem MySQL i ich rozwiązania, ale zastosowanie:
DB::statement('SET FOREIGN_KEY_CHECKS=0;'); and
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
W dół() wydaje się nie działać i po uruchomieniu opisać w MySQL tabele wyglądają dobrze.
Migracja została poprawnie nazwana, aby upewnić się, że tabela użytkowników została najpierw poddana migracji, a następnie pojazdy, aby można było zastosować klucz obcy, a konfigurowane tabele prawidłowo sugerują, że migracje zostały uruchomione, ale wystąpił błąd. Rzuciłem i odtworzyłem DB i próbowałem go ponownie i jest to ten sam rezultat. Nie rozumiem również, dlaczego próbuje on skrócić pierwszą migrację i seed bazy danych, nie sądziłem, że wystąpi, gdy spróbujesz uruchomić php artisan migracja: 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');
}
Próbuje wysiać bazę danych podczas pierwszej migracji, ponieważ przekazuje się opcję '--seed'.Twoje migracje są w porządku, problem polega na wysiewaniu. Czy możesz dodać kod do siewnika stołów samochodowych? – user3158900
Można również spróbować 'delete()' 'zamiast skróconej()'. To powinno działać. – user3158900
Hi @ user3158900, znalazłem go w DatabaseSeeder. Dodałem zamiast tego dodane usuwanie() i działa. Jeśli napiszesz jako odpowiedź, zaznaczę to jako poprawne. – mtpultz