我在数据库中创建了一个插入默认值的播种器。
如果我多次运行此播种器,则mysql会为重复键返回错误
所以我的问题是处理此错误的最佳方法是什么?如何继续运行其他种子?
答案 0 :(得分:4)
您不应多次运行Public Sub MyMacro
If ActiveSheet.Name < "Safe" Then Exit Sub
'rest of your macro here
End Sub
命令。更好的方法是使用以下命令重新创建所有表并播种数据:
db:seed
或者在运行php artisan migrate:refresh --seed
命令后运行db:seed
。
https://laravel.com/docs/5.5/migrations#rolling-back-migrations
答案 1 :(得分:2)
在播种数据之前,您仍然可以使用truncate方法,这将删除重复的键错误,因为该表已经为空:
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class EntitiesTableSeeder extends Seeder {
public function run() {
DB::table('table')->truncate();
//OR
\App\Model::truncate();
// then insert your data here
}
答案 2 :(得分:0)
将种子分成多个文件,database/DatabaseSeeder.php
只需将它们称为:
$this->call(AuthorSeeder::class);
$this->call(ContentSeeder::class);
但是可以肯定的是,你无法复制密钥,这就是你必须解决的问题。
答案 3 :(得分:0)
此软件包解决了这个问题,它的版本像laravel一样控制着种子的迁移,
php artisan seed
将只运行尚未运行的种子。