Не может усечь таблицу до посева - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу обрезать свою пользовательскую таблицу до seed.i сделать так:

DatabaseSeeder.php:

 <?php

 use Illuminate\Database\Seeder;
 use Illuminate\Support\Facades\DB;

 class DatabaseSeeder extends Seeder
 {
     public function run()
     {
         App\User::truncate();

         factory(App\User::class,1)->create();
     }
 }

Затем выполните php artisan db:seed и есть ошибка:

In Connection.php line 664:

  SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table referenced in a foreign key constra
  int (`mr_musicer`.`dislikes`, CONSTRAINT `dislikes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `mr_musicer`
  .`users` (`id`)) (SQL: truncate `users`)


In Connection.php line 458:

  SQLSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table referenced in a foreign key constra
  int (`mr_musicer`.`dislikes`, CONSTRAINT `dislikes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `mr_musicer`
  .`users` (`id`))

Теперь я хочу узнать, почему я не могу обрезать свою таблицу пользователей!

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Существует проблема с внешним ключом, и таблица пытается напомнить вам об этом. Если вы все равно хотите усечь таблицу.

    Schema::disableForeignKeyConstraints();

    // ... Some Truncate Query

    Schema::enableForeignKeyConstraints();

Не забудьте использовать: use Illuminate\Support\Facades\Schema;

0 голосов
/ 01 апреля 2019

У вас есть ссылки на ваших пользователей в другой таблице.Вы должны добавить ->onDelete('cascade') в столбец таблицы dislikes, который ссылается на идентификатор пользователя, или сначала удалить все неприязни вручную.

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