ci3和ci4配置mysqli驱动必须严格区分:ci3在application/config/database.php中设'dbdriver'=>'mysqli',ci4在app/config/database.php中设'dbdriver'=>'mysqli'并运行php spark cache:clear。

CodeIgniter 配置 MySQLi 驱动,关键在版本区分和配置项精准填写。CI3 和 CI4 的写法、路径、驱动要求完全不同,混用必失败。直接按你用的版本操作,90% 以上连接问题能一步解决。
确认你用的是 CI3 还是 CI4
这是所有操作的前提:
- CI3:适用于 PHP 5.6–7.4,配置文件路径为 application/config/database.php,仍支持
mysql(已废弃)和mysqli驱动,但必须用mysqli才兼容新版 PHP; - CI4:要求 PHP ≥ 7.3,配置文件在 app/Config/Database.php,
mysql驱动已被彻底移除,只接受mysqli或PDO(推荐 PDO,尤其涉及命名参数或复杂事务时); - 检查项目根目录是否存在
spark文件——有则是 CI4;若只有index.php和system/目录,基本是 CI3。
CI3 中启用 MySQLi 驱动的实操要点
打开 application/config/database.php,定位到 $db['default'] 数组,确保以下五项准确无误:
-
hostname:填
localhost或具体 IP(如127.0.0.1),注意 MySQL 若绑定localhost(Unix socket),则不能用127.0.0.1(TCP),反之亦然; -
username / password:账号密码必须与 MySQL 实际一致;空密码要写成
'',不是null或注释掉; -
database:库名必须已存在,且该用户拥有
SELECT, INSERT, UPDATE, DELETE权限; -
dbdriver:明确设为
'mysqli'(小写,字符串格式),禁用'mysql'; -
active_group:必须存在且值为
'default'(拼写勿错,如'defalut'就会静默失败)。
保存后,在控制器中用 $this->load->database() 加载,即可使用。
CI4 中配置 MySQLi 驱动的关键差异
CI4 不再用数组式配置,而是面向对象的 PHP 类。编辑 app/Config/Database.php,找到 public $default 属性(类型为 ConnectionInterface 实例):
- 若用原生 MySQLi,需确保
'DBDriver'设为'MySQLi'(首字母大写); - DSN 字段可留空,但必须填全
'hostname'、'username'、'password'、'database'、'port'(默认 3306,自定义端口务必显式写出); - 字符集建议设为
'charset' => 'utf8mb4',排序规则配'DBCollat' => 'utf8mb4_unicode_ci'; - 改完配置后,必须运行
php spark cache:clear清除配置缓存,否则修改不生效。
在代码中获取实例:用 $db = service('database'); 即可。
通用排错建议
即使配置正确,仍连不上?快速核对这几项:
- PHP 是否启用了
mysqli扩展?运行php -m | grep mysqli查看; - MySQL 服务是否运行?端口是否被防火墙拦截?尝试命令行
mysql -h localhost -u root -p直连验证; - CI3 中
db_debug设为TRUE,CI4 中开启debug模式,错误信息会直接显示在页面上; - 文件权限:确保
database.php可被 Web 用户读取(如 Apache 的www-data或 Nginx 的nginx用户)。











