codeigniter 3 默认不原生支持 sqlite,需通过 pdo 驱动配置 dsn 连接;ci4 内置 sqlite3 驱动,直接设 dbdriver 为 'sqlite3' 并指定 filename 即可,支持自动创建数据库文件。

CodeIgniter 3 默认不原生支持 SQLite,但可通过 PDO 驱动实现连接;CI4 则内置完整 SQLite 支持,配置更直接。关键在于驱动选择、文件路径权限和扩展启用。
确认环境支持 SQLite
确保 PHP 已启用 PDO 和 PDO_SQLITE 扩展(CI3)或 sqlite3 扩展(CI4)。在命令行运行 php -m | grep -i sqlite 可验证。若无输出,需在 php.ini 中取消注释:extension=php_pdo_sqlite.dll(Windows)或extension=pdo_sqlite.so(Linux/macOS)
CI3 连接 SQLite(使用 PDO)
在 application/config/database.php 中配置 PDO 类型的 SQLite 连接:
- 设置
'dbdriver' => 'pdo' - 用
'dsn'指定 SQLite 文件路径,例如:'dsn' => 'sqlite:/var/www/myapp/database/app.db'
(路径必须为绝对路径,且 Web 服务器用户有读写权限) - 清空
hostname、username、password、database等字段(PDO DSN 已包含全部信息) - 推荐关闭调试以外的冗余选项:
'db_debug' => TRUE,'cache_on' => FALSE,'pconnect' => FALSE
CI4 连接 SQLite(原生支持)
编辑 app/Config/Database.php 中的 $default 组:
- 设
'DBDriver' => 'SQLite3' - 指定数据库文件路径:
'filename' => WRITEPATH . 'database/app.db'
(WRITEPATH是 CI4 内置常量,指向可写目录,如writable/database/) - 无需用户名密码,留空即可
- 首次运行时若文件不存在,CI4 会自动创建(前提是目录可写)
测试连接是否生效
在控制器中快速验证:
- CI3:
$this->load->database(); echo $this->db->conn_id ? 'OK' : 'Failed'; - CI4:
if (service('database')->connect()) { echo 'Connected'; } - 执行简单查询更可靠:
$this->db->query("SELECT 1")->getRow();或 CI4 的$db->query("SELECT 1")->getRowArray() - 注意:SQLite 表名、字段名区分大小写,且不支持某些 MySQL 特有语法(如
LIMIT offset, count应写为LIMIT count OFFSET offset)
只要路径正确、扩展启用、权限到位,SQLite 连接并不复杂,但容易卡在文件路径或写入权限上。











