Apabila merangkum kaedah mengendalikan pangkalan data sqlite3, kod ujian adalah seperti berikut:
$path = 'test.db';
$conn = new sqlite3($path); .. .';
untuk($i=0;$i<10000,$i++){
$conn->query($sql);
}
Sebab saya nak tambah kawalan transaksi, tetapi saya mendapatnya Saya tidak menemui sebarang kaedah tentang sqlite3 Cara menambah transaksi menggunakan pdo(). Saya telah menulis Java sebelum ini, dan saya belum biasa dengan PHP. Saya harap semua pengekod boleh menjawabnya, terima kasih.
menghadapi masalah seperti itu semasa proses pembangunan:
beroperasi pada jadual berbeza dua fail pangkalan data masing-masing Urutan pelaksanaan ialah: buka db A->mulakan transaksi->buka db B->pilih daripada db B-. >tutup db B->pilih daripada db A->rollbak atau commit->tutup db A
Ujian mendapati bahawa langkah pilih daripada db B akan membuat ralat Mesej ralat adalah rutin perpustakaan yang dipanggil urutan Selepas ralat Laksanakan rollback, langkah ini juga akan melaporkan ralat.
Pada asalnya saya fikir sebabnya ialah: memulakan transaksi hanya boleh beroperasi pada satu pangkalan data.
Ujian mendapati bahawa walaupun transaksi tidak dimulakan, urutan pelaksanaan ialah: buka db A->buka db B->pilih daripada db B->tutup db B->pilih daripada db A-> ;close db A, Ralat rutin perpustakaan yang dipanggil keluar dari urutan masih berlaku.
Adakah benar jika anda membuka pangkalan data, anda tidak boleh membuka pangkalan data lain sebelum menutupnya?
Adakah pelaksanaan serentak sqlite perlu dikawal oleh pengguna?
Saya mendapati hari ini bahawa punca ralat di atas mungkin disebabkan pembolehubah global program kawalan induk dan subrutin adalah konsisten (kedua-duanya adalah sqlite3 *db), menyebabkan pembolehubah global program kawalan induk diubah suai .
Perincian memerlukan penyelidikan lanjut.