[英]file is encrypted or is not a database - sqlite
我在打開sqlite文件時遇到了一些麻煩
在命令行中,我得到以下信息:
#sqlite3 sms.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from message;
Error: file is encrypted or is not a database
錯誤不是當我連接時,而是當我運行查詢時
檢查文件讓我這個
# file sms.db
sms.db: SQLite 3.x database
因此,這應該不是版本問題-就像使用sqlite3打開sqlite2文件一樣
在PHP中我有這個:
try
{
/*** connect to SQLite database ***/
$db = new PDO("sqlite:path/sms.db");
echo "Handle has been created ...... <br><br>";
}
catch(PDOException $e)
{
echo $e->getMessage();
echo "<br><br>Database -- NOT -- loaded successfully .. ";
die( "<br><br>Query Closed !!! $error");
}
$result = $db->query('SELECT * from message') or var_dump($db->errorInfo());
得到我這個(不是在連接時,而是在執行查詢時)
array(3) { [0]=> string(5) "HY000" [1]=> int(26) [2]=> string(38) "file is encrypted or is not a database" }
我為Firefox使用Sql管理器擴展,在那里我可以打開文件而沒有任何問題(並且可以在沒有任何加密或密碼的情況下運行任何查詢)。 這對我來說真的很奇怪。 我已經搜索了最近幾個小時,但是沒有找到任何解決方案。 任何幫助,將不勝感激。
我剛剛在Windows上進行了測試,可以打開數據庫。 我認為問題與sqlite驅動程序有關。
在Windows上,我有SQLite庫3.7.7.1在我的centos服務器上,我有SQLite庫3.6.20
現在的問題是如何更新php sqlite擴展。 我無法更新整個php(可能會導致錯誤)
像yum install php-pdo,yum install php5-sqlite3這樣的命令不起作用
有時,將php-scripts從一台主機移到另一台時會出現此錯誤。 最常見的是sqlite WAL模式下的錯誤:
PRAGMA journal_mode = WAL;
要解決此問題,您需要在數據庫中禁用此選項。 通過將文件數據庫\\ x02 \\ x02中的2個字節替換為\\ x01 \\ x01到地址\\ x12(12月18日)來執行此操作的最簡單方法:在bash中,可以使用以下命令:
do printf '\x01\x01' | dd of=basename.db bs=1 seek=18 count=2 conv=notrunc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.