Laravel数据库播种时出现列不存在错误,请求排查解决
问题排查与解决
核心错误原因
错误信息明确显示Unknown column 'code ' in 'field list',注意code后带有空格,但你的数据库迁移文件中定义的列是无空格的code,这说明播种时插入的字段名多了一个多余空格,导致数据库无法匹配对应列。
关键问题点
你提供的工厂代码属于User模型(包含name、email等用户字段),并非Medicine模型的工厂文件,这是贴错文件导致的混淆。请找到Database/Factories/MedicineFactory.php文件,按以下步骤修复:
修复步骤
修正Medicine工厂的字段定义
打开MedicineFactory.php,确保definition方法返回的数组字段名无多余空格,且与模型$fillable字段匹配:public function definition() { return [ 'price' => $this->faker->randomNumber(), 'quantity' => $this->faker->randomNumber(), 'code' => $this->faker->unique()->bothify('????##'), // 生成符合业务格式的code值 ]; }检查播种类的调用逻辑
打开Database/Seeders/DatabaseSeeder.php,确认调用的是Medicine模型的播种逻辑:public function run() { \App\Models\medicine::factory(10)->create(); }额外优化建议(非当前错误,但更合理)
迁移文件中price和quantity使用string类型不符合业务逻辑,建议改为对应类型:$table->decimal('price', 8, 2); // 支持两位小数的价格字段 $table->integer('quantity'); // 数量字段用整数类型重新执行播种
确保迁移已正确执行(若之前有错误可回滚后重新迁移),再执行播种命令:php artisan migrate:refresh --seed
内容的提问来源于stack exchange,提问作者Tychicus
相关产品推荐
相关产品推荐

