Laravel执行php artisan db:seed时报1046 No database selected错误如何解决
解决方案
- 第一步先清空Laravel配置缓存
很多情况下修改完.env或database.php后,Laravel仍然读取旧的缓存配置导致报错,先依次执行以下命令:
执行完成后重新运行php artisan config:clear php artisan cache:clearphp artisan db:seed测试。 - 检查Seeder和对应模型的连接配置
你当前database.php中的sub数据库连接的database字段是空值,如果你的Seeder文件中显式指定了使用sub连接,或者对应Company模型里设置了protected $connection = 'sub',就会触发无数据库选中的错误。
修复方式二选一:- 给
sub连接的database配置项填写对应的数据库名 - 移除Seeder/模型中错误的连接指定,使用默认的
main连接
- 给
- 强制指定连接运行填充
可以直接在命令行指定用main连接运行填充,绕过默认连接配置问题:php artisan db:seed --connection=main - 确认表归属的数据库
手动登录数据库确认caeru_local_companies表确实存放在caeru_main库中,避免表实际创建在其他库导致找不到的问题。 - 验证配置加载是否正常
可以临时添加测试路由打印当前数据库配置,确认配置读取正确:
访问该路由检查输出是否符合你的配置预期即可。Route::get('/test-db', function () { return [ '默认连接' => config('database.default'), 'main连接数据库名' => config('database.connections.main.database') ]; });
内容的提问来源于stack exchange,提问作者blue pine
相关产品推荐
相关产品推荐

