You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:38:01