前置需求
- ThinkPHP 目錄下存在
Lib/Driver/Db/DbPdo.class.php(無則至官網下載)
- PHP 啟用
extension=php_pdo_sqlite.dll(PHP 5.3+ 內建)
- SQLite3 資料庫檔案(如
DataBase/db.db)可寫入權限
config.php 完整配置
return [
'DB_TYPE' => 'pdo',
'DB_DSN' => 'sqlite:DataBase/db.db', // 相對專案根目錄
'DB_PREFIX' => 'fish_', // 表前綴
'DB_CHARSET'=> 'utf8',
'DB_FIELDS_CACHE' => false, // SQLite 無需欄位快取
];
DSN 參數說明
| 參數 | 範例 | 說明 |
| sqlite: | sqlite:DataBase/db.db | 相對路徑,建議放在非公開目錄 |
| sqlite: | sqlite:/var/www/data/app.db | 絕對路徑 |
| sqlite::memory: | sqlite::memory: | 記憶體資料庫(測試用) |
驗證連線
// 控制器中測試
$db = M(); // 實例化 Model
try {
$db->query('SELECT 1');
echo 'SQLite3 連線成功';
} catch (\Exception $e) {
echo '連線失敗: ' . $e->getMessage();
}
整合 ThinkphpHelper 代碼生成器
同上篇文章,將生成器放入 Action 目錄,配置同上 DSN 即可對 SQLite3 資料表一鍵生成 CRUD。
常見問題排查
| 錯誤 | 原因 | 解決 |
| could not find driver | 未啟用 pdo_sqlite | php.ini 啟用 extension=pdo_sqlite |
| unable to open database file | 路徑錯誤/權限不足 | 確認 db.db 存在且 www-data 可寫 |
| table not found | 前綴不匹配 | 檢查 DB_PREFIX 與實際表名 |
工具箱
相關專題
- 《ThinkPHP 入門教程》
- 《ThinkPHP 常用方法總結》