Php laravel 8种子设定,SQLSTATE[23000]:完整性约束冲突:
我将我的项目从Laravel7降到了8。但问题是,当我运行seeding命令时,它显示了一个错误SQLSTATE[23000]:完整性约束冲突:。这是因为它为我之前运行的前一个种子设定数据进行了种子设定。 我在运行种子设定命令之前也做过Php laravel 8种子设定,SQLSTATE[23000]:完整性约束冲突:,php,laravel,laravel-blade,laravel-seeding,Php,Laravel,Laravel Blade,Laravel Seeding,我将我的项目从Laravel7降到了8。但问题是,当我运行seeding命令时,它显示了一个错误SQLSTATE[23000]:完整性约束冲突:。这是因为它为我之前运行的前一个种子设定数据进行了种子设定。 我在运行种子设定命令之前也做过 在DatabaseSeeder.php和其他种子文件的顶部添加Database\Seeder命名空间 将文件夹名称种子替换为位于\database\folder的种子 更新composer.json,如下所示: "autoload": {
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\DeliveryAddress;
class DeliveryAddressTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
$deliveryRecords = [
['id' => 1, 'user_id' => 1, 'name' => '***', 'address' => 'Test 123', 'city' => '*******', 'country' => '******', 'pincode' => '*****', 'mobile' => '**********', 'status' => 1],
];
DeliveryAddress::insert($deliveryRecords);
}
}
将这些放入您的播种器中我希望DeliveryAddress迁移将具有$table->id()的列;宣言。在这种情况下,您的播种机在多次运行时将在id列中插入重复值
您可以在运行播种机之前截断表
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\DeliveryAddress;
class DeliveryAddressTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DeliveryAddress::truncate();
//
$deliveryRecords = [
['id' => 1, 'user_id' => 1, 'name' => '***', 'address' => 'Test 123', 'city' => '*******', 'country' => '******', 'pincode' => '*****', 'mobile' => '**********', 'status' => 1],
];
DeliveryAddress::insert($deliveryRecords);
}
}
另外,确认user_id列是否具有任何foreignkey约束。如果是,您应该有一个id为“1”的users表记录,以避免任何错误数据。您可以显示DeliveryAddressTableSeeder播种器吗?那个表格里有什么数据吗?@Psycho请结帐。我已经更新了这个问题,如果我正确理解种子设定,您只需要在所有表创建时运行一次,一旦数据库被种子设定,您就不需要再次运行它,除非您刷新数据库。@MuqadarAli,您不想在种子设定之前先截断表吗?您的送达地址的id设置为1。我猜这个ID在您的表中设置为增量。我认为您应该截断您的表,或者从播种机中删除“id”字段。@Muqadar根据您的播种机,jasvinder的回答应该足够了
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\DeliveryAddress;
class DeliveryAddressTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DeliveryAddress::truncate();
//
$deliveryRecords = [
['id' => 1, 'user_id' => 1, 'name' => '***', 'address' => 'Test 123', 'city' => '*******', 'country' => '******', 'pincode' => '*****', 'mobile' => '**********', 'status' => 1],
];
DeliveryAddress::insert($deliveryRecords);
}
}
public function run()
{
$deliveryRecords = [
['user_id' => 1, 'name' => '***', 'address' => 'Test 123', 'city' => '*******', 'country' => '******', 'pincode' => '*****', 'mobile' => '**********', 'status' => 1],
];
DeliveryAddress::insert($deliveryRecords);
}