我正在尝试使用PDO(PHP 7.1.1)打开加密的sqlite3数据库。
$db = new PDO('sqlite:mydb.sqlite','','password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$results = $db->query('SELECT * from Table');
以上代码抛出以下异常:
Uncaught PDOException: SQLSTATE[HY000]: General error: 26 file is encrypted or is not a database
我的连接字符串是否正确? 是否可以使用PDO打开加密的sqlite3数据库?
答案 0 :(得分:0)
PDO SQLite interface的文档未提及加密,PDO class的文档也未提及。我唯一知道的是SQLite3 class,它在the constructor中有加密密钥的参数。
根据文件:
encryption_key - 加密和解密SQLite数据库时使用的可选加密密钥。 如果未安装SQLite加密模块,则此参数无效 。
正如您对问题的评论中所提到的,还有其他答案可以解决安装和使用PHP的sqlite加密模块的问题。