在封裝對sqlite3資料庫進行操作的方法時,測試程式碼如下:
$path = 'test.db';
$conn = new sqlite3($path);
$sql = 'insert into tb_test...';
for($i=0;$i<10000,$i ){
$conn-> query($sql);
}
由於想加入事務的控制,但是找來找去都沒有找到關於sqlite3這樣的方式,如何添加事務,都是用的new pdo()。本人之前一直寫java的,php目前還不熟悉,希望各位碼友能回答一下,謝謝啦。
開發過程遇到這樣的問題:
分別對兩個資料庫檔案的不同表進行操作,執行順序為: open db A->begin trasaction->open db B-> ;select from db B->close db B->select from db A->rollbak or commit->close db A
測試發現, select from db B 這一步會出錯,錯誤訊息為library routine called out of sequence ,出錯後執行rollback ,這一步驟也會報錯。
原來以為原因是:開始一個交易只能對一個資料庫進行操作。
測試發現,即使不開始事務,執行順序為: open db A->open db B->select from db B->close db B->select from db A-> close db A , 仍會出現ibrary routine called out of sequence 的錯誤。
難道打開一個資料庫,在關閉其之前不能打開其他資料庫?
難道sqlite 的同時執行需要使用者自己來控制?
今天發現,以上出錯原因可能是總控程式和子程式的全域變數一致(都是sqlite3 *db ),導致總控程式的全域變數被修改。
具體還需進一步研究。