CodeIgniter 3 连接 SQLite 必须使用 PDO 方式,配置 dsn 为绝对路径(如 'sqlite:/var/www/myapp/app.db'),dbdriver 设为 'pdo',并确保 php.ini 启用 pdo_sqlite 扩展且数据库目录可读写。

CodeIgniter 3 连接 SQLite 本地数据库不能用 dbdriver='sqlite',必须走 PDO 方式,且依赖 PHP 的 pdo_sqlite 扩展已启用。配置关键在于 DSN 路径写对、驱动设为 pdo、并确保文件可读写。
确认 pdo_sqlite 扩展已启用
在终端运行:
php -m | grep pdo_sqlite
没输出说明未启用。需编辑 php.ini,取消注释或添加:
extension=pdo_sqlite
重启 Web 服务器(如 Apache 或 PHP-FPM)生效。
正确配置 database.php 中的 SQLite 连接
打开 application/config/database.php,修改 $db['default'] 数组:
-
dsn 填绝对路径,例如:
'dsn' => 'sqlite:/var/www/myapp/app.db'(Linux)
或 'dsn' => 'sqlite:C:/xampp/htdocs/myapp/app.db'(Windows) - dbdriver 必须设为 'pdo',不是 'sqlite'
- hostname、username、password、database 全部留空或删掉(PDO SQLite 不用这些)
- char_set 和 dbcollat 可设为 'utf8' 和 'utf8_general_ci'(虽 SQLite 不强制,但 CI 要求字段存在)
验证连接是否成功
在控制器中测试:
$this->load->database();<br>if ($this->db->conn_id) {<br> echo "SQLite 连接成功";<br>} else {<br> echo "连接失败,请检查 DSN 路径和权限";<br>}
注意:
- 确保 .db 文件所在目录有写权限(首次连接会自动创建文件)
- 如果用相对路径(如 'sqlite:app.db'),CI 会从 PHP 当前工作目录找,易出错,**务必用绝对路径**
常见报错与应对
• “Unable to connect to your database server using the provided settings.”
→ 检查 DSN 是否含 sqlite: 前缀、路径是否存在、PHP 是否有读写权限
• “Class 'PDO' not found”
→ `pdo` 扩展未启用,不只是 `pdo_sqlite`
• “Database error: A Database Driver class was not found.”
→ 错误设了 dbdriver = 'sqlite',CI3 不支持该驱动名











