codeigniter 4支持多数据库配置,只需在app/config/database.php中定义public $second_db属性,作为$db数组新元素;通过database::connect('second_db')获取连接并操作,模型中可设protected $dbgroup = 'second_db'。

CodeIgniter 4 支持同时配置多个数据库,只需在数据库配置文件中定义额外的数据库组即可,不需要额外安装扩展或修改核心。
在 app/Config/Database.php 中添加 second_db 配置
打开 `app/Config/Database.php`,找到 `$defaultGroup` 对应的配置(通常是 `'default'` 组),然后在同个 `$db` 数组里新增一个名为 `'second_db'` 的键(注意:不是 `'second_db' => [...]` 单独赋值,而是作为 `$db` 数组的一个新元素):public $second_db = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'your_second_user',
'password' => 'your_second_pass',
'database' => 'second_database_name',
'DBDriver' => 'MySQLi', // 或 PostgreSQL、SQLSRV 等
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'charset' => 'utf8mb4',
'DBCollat' => 'utf8mb4_unicode_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
✅ 关键点:
- 组名(如
second_db)必须是$db类属性名,且首字母小写; - 类属性名将自动成为数据库连接别名,在代码中通过
$this->db->connect('second_db')或Database::connect('second_db')调用; - 所有字段与
default组保持一致,推荐复制default配置后仅修改hostname/username/database等关键项。
在控制器或模型中使用 second_db
不需手动加载,直接通过 `Database` 类获取连接实例:use CodeIgniter\Database\Database;
// 获取 second_db 连接(返回 Database 实例)
$secondDB = Database::connect('second_db');
// 执行查询
$result = $secondDB->table('logs')->select('*')->get()->getResult();
// 或链式调用(注意:每次 newQuery() 都基于该连接)
$users = $secondDB->table('users')->where('status', 'active')->get()->getResult();
也可在模型中指定连接:
<?php namespace App\Models;
use CodeIgniter\Model;
class LogModel extends Model
{
protected $DBGroup = 'second_db'; // 指定默认使用 second_db
protected $table = 'logs';
}验证连接是否生效
可在调试时快速检测:$secondDB = Database::connect('second_db');
if ($secondDB->connID) {
echo "second_db 连接成功";
} else {
log_message('error', 'second_db 连接失败:' . $secondDB->getError()['message']);
}注意:若报错“Database not found”,检查
- 属性名是否拼写为
public $second_db(不是$secondDB或second_db_config); - 是否漏掉
public访问修饰符; - 数据库服务是否运行、账号密码和库名是否正确;
-
DBDriver值是否匹配实际扩展(如 MySQLi 要求启用mysqli扩展)。
不复杂但容易忽略。











