Laravel执行db:seed报错CountriesTableSeeder不存在如何解决?
修复方案
问题根因
你的报错是命名空间、文件存放路径、composer自动加载映射三者不匹配导致的类加载失败,具体有两个冲突点:
- composer.json中已经配置
Database\Seeders\命名空间映射到database/seeders/目录,但你将CountriesTableSeeder.php等填充文件存放在了database/seeds/目录,路径不匹配无法自动加载。 DatabaseSeeder.php中引用的是Database\Seeds\CountriesTableSeeder,但CountriesTableSeeder本身声明的命名空间是Database\Seeders,二者命名空间不一致。
操作步骤
- 将
database/seeds/目录下的所有填充文件(包括CountriesTableSeeder.php、TimeZonesTableSeeder.php、LanguagesTableSeeder.php)全部移动到database/seeders/目录下,删除空置的database/seeds/目录。 - 修改
database/seeders/DatabaseSeeder.php的引用代码:
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; // 替换为正确的命名空间引用 use Database\Seeders\CountriesTableSeeder; use Database\Seeders\TimeZonesTableSeeder; use Database\Seeders\LanguagesTableSeeder; class DatabaseSeeder extends Seeder { public function run() { $this->call([CountriesTableSeeder::class,TimeZonesTableSeeder::class,LanguagesTableSeeder::class]); } }
- 执行命令重新生成自动加载映射:
composer dump-autoload - 重新执行填充命令即可正常运行:
php artisan db:seed
内容的提问来源于stack exchange,提问作者user16990719
相关产品推荐
相关产品推荐

