codeigniter 3.1.13 的 mysql 配置统一在 application/config/database.php 中,$db['default'] 为必存键;hostname、username、password、database 需准确填写,dbdriver 推荐 'mysqli',多环境通过 environment 判断,dbprefix 影响表名匹配。

数据库配置文件路径和基础结构
CodeIgniter 3.1.13 的 MySQL 连接参数统一写在 application/config/database.php 文件里,不是 database.default.php 或其他变体。这个文件返回一个 $db 数组,其中 ['default'] 是默认数据库组,必须存在且不能拼错键名。
常见错误是改了 hostname 却漏掉 username 或 password,或者把 database(库名)写成不存在的名称——这会导致后续所有查询报 Database error: A Database Error Occurred,但不提示具体原因。
关键参数含义与典型值
以下字段必须按实际环境填写,顺序无关,但大小写敏感:
-
hostname:MySQL 服务地址,本地常用'localhost'或'127.0.0.1';Docker 环境可能为'mysql'(容器名) -
username和password:数据库账号密码,空密码要写成'',不能留空或注释掉 -
database:已创建好的数据库名,例如'myapp_db',不是前缀也不是用户名 -
dbdriver必须是'mysqli'(推荐)或'mysql'(已弃用,PHP 7.0+ 不支持) -
char_set和dbcollat建议设为'utf8'和'utf8_general_ci',避免中文乱码
连接失败时怎么快速定位
如果页面空白或报 Unable to connect to your database server using the provided settings.,优先检查:
- 确认 MySQL 服务正在运行(
sudo service mysql status或docker ps) - 用命令行直连验证凭证:
mysql -h 127.0.0.1 -u your_user -p your_db - 检查
application/logs/下最新日志,搜索DB_driver或mysqli_connect - 确保
mysqli扩展已启用:php -m | grep mysqli
多环境配置(可选但实用)
开发、测试、生产环境用不同数据库?别硬编码。在 database.php 开头加判断:
if (ENVIRONMENT === 'development') {
$db['default']['hostname'] = '127.0.0.1';
$db['default']['database'] = 'myapp_dev';
} elseif (ENVIRONMENT === 'production') {
$db['default']['hostname'] = 'prod-db.internal';
$db['default']['database'] = 'myapp_prod';
}
同时确保 index.php 中 define('ENVIRONMENT', 'development'); 设置正确。环境名必须和 switch 或 if 中完全一致,大小写敏感。
最容易被忽略的是 dbprefix 字段——它不参与连接,但一旦设了又没在表名前加前缀(比如用了 $this->db->get('users') 而不是 $this->db->get('tbl_users')),查不到数据也不会报错,只会返回空结果集。











