Laravel 5多数据库连接报错:Database [dpnmwin]未配置
看起来你遇到的是Laravel多数据库配置的典型问题,咱们一步步排查解决:
1. 先确认
config/database.php的连接配置 首先要保证connections数组里存在**键名为dpnmwin**的配置项(键名必须和你调用时的名称完全一致,大小写敏感),示例配置如下:
'connections' => [ // 你的spi_intranet正常配置 'spi_intranet' => [ 'driver' => env('DB_CONNECTION', 'mysql'), 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'spi_intranet'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], // 必须添加这部分dpnmwin的配置 'dpnmwin' => [ 'driver' => env('DB_CONNECTION_DPNMWIN', 'mysql'), 'host' => env('DB_HOST_DPNMWIN', 'localhost'), 'port' => env('DB_PORT_DPNMWIN', '3306'), 'database' => env('DB_DATABASE_DPNMWIN', 'dpnmwin'), 'username' => env('DB_USERNAME_DPNMWIN'), 'password' => env('DB_PASSWORD_DPNMWIN'), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], ],
如果这里没加dpnmwin项,或者键名写错了(比如写成DpnMwin),就会直接报“Database [dpnmwin] not configured”。
2. 检查
.env文件的环境变量 确保你在.env里配置了对应dpnmwin的变量,别写错变量名:
# 原有的spi_intranet配置(正常工作的) DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=spi_intranet DB_USERNAME=your_spi_user DB_PASSWORD=your_spi_pass # 新增的dpnmwin专属配置 DB_CONNECTION_DPNMWIN=mysql DB_HOST_DPNMWIN=localhost # 如果是远程数据库,填对应IP/域名 DB_PORT_DPNMWIN=3306 DB_DATABASE_DPNMWIN=dpnmwin DB_USERNAME_DPNMWIN=your_dpnmwin_user DB_PASSWORD_DPNMWIN=your_dpnmwin_pass
要是变量名写错(比如把DB_DATABASE_DPNMWIN写成DB_DATABASE_DPNM),database.php里读不到正确值,相当于配置没生效。
3. 清除Laravel配置缓存
Laravel 5会缓存配置文件,尤其是生产环境,修改配置后如果不清缓存,系统还是用旧的配置。执行以下命令:
php artisan config:clear php artisan cache:clear
这一步很容易被忽略,很多时候配置本身没错,但缓存没清导致报错。
4. 确认调用代码是否指定了正确连接
你必须明确告诉Laravel要用dpnmwin连接,不能直接用默认的(默认是spi_intranet),示例调用方式:
// 用DB门面直接查询 $dpnmwinData = DB::connection('dpnmwin')->select('SELECT * FROM your_table'); // 或者在模型里指定连接 class DpnmwinModel extends Model { protected $connection = 'dpnmwin'; protected $table = 'your_table'; } // 调用模型获取数据 $data = DpnmwinModel::all();
如果调用时没写->connection('dpnmwin'),Laravel会用默认连接,自然找不到dpnmwin的配置。
额外排查点
- 验证dpnmwin数据库的账号权限:用Navicat或mysql命令行测试,确保你配置的用户名/密码能正常连接到该数据库。
- 检查数据库服务器防火墙:确认你的应用服务器IP被允许访问dpnmwin数据库所在的服务器。
按照这些步骤排查后,应该就能解决问题了。
内容的提问来源于stack exchange,提问作者Edwin Aquino
相关产品推荐
相关产品推荐

