【问题标题】:Can't Truncate Table Befor Seeding播种前不能截断表
【发布时间】:2019-08-23 01:07:03
【问题描述】:

我想在种子之前截断我的用户表。我这样做:

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`))

我现在想知道为什么我不能截断我的用户表!

【问题讨论】:

    标签: php laravel laravel-5 eloquent lumen


    【解决方案1】:

    存在外键问题,表正试图提醒您。 如果你想截断表格。

        Schema::disableForeignKeyConstraints();
    
        // ... Some Truncate Query
    
        Schema::enableForeignKeyConstraints();
    

    别忘了使用: use Illuminate\Support\Facades\Schema;

    【讨论】:

      【解决方案2】:

      当表中有外键时,在播种前截断数据的最简单方法

      只需在 run 方法的开头添加这一行。

      Schema::enableForeignKeyConstraints();
          DB::truncate('posts');
      Schema::disableForeignKeyConstraints();
      

      【讨论】:

        【解决方案3】:

        您在其他一些表上引用了您的用户。您应该将-&gt;onDelete('cascade') 添加到引用用户ID 的不喜欢表列中,或者先手动删除所有不喜欢。

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

        【讨论】:

        • 我在所有这样的表中都使用了cascade$table-&gt;foreign('user_id')-&gt;references('id')-&gt;on('users')-&gt;onDelete('cascade')-&gt;onUpdate('cascade');
        猜你喜欢
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-20
        相关资源
        最近更新 更多