Có một vấn đề đã biết với SQLite đưa ra lỗi "cơ sở dữ liệu bị khóa" cho truy vấn thứ hai trong một giao dịch đơn lẻ khi sử dụng Perl DBD :: SQLite không? Kịch bản: Linux, Perl DBI, AutoCommit => 0, một chương trình con với hai khối mã (sử dụng các khối để bản địa hóa các tên biến). Trong khối mã đầu tiên, một xử lý truy vấn được tạo ra bằng cách chuẩn bị() trên một câu lệnh chọn, nó được thực hiện() và khối đã đóng. Khối thứ hai khối xử lý truy vấn khác được tạo ra bằng cách chuẩn bị cho một câu lệnh cập nhật và thường xuyên (30% thời gian) SQLite/DBI cung cấp cho một lỗi cơ sở dữ liệu bị khóa ở giai đoạn này. Tôi nghĩ rằng lỗi xảy ra trong quá trình chuẩn bị() và không xảy ra trong khi thực thi().Tại sao SQLite đưa ra một "cơ sở dữ liệu bị khóa" cho truy vấn thứ hai trong một giao dịch khi sử dụng DBD :: SQLite của Perl?
Công việc của tôi xung quanh là cam kết sau truy vấn đầu tiên. (Gọi kết thúc trên truy vấn đầu tiên không giúp được). Tôi không muốn cam kết vì nhiều lý do liên quan đến sự sang trọng và hiệu suất. Mã gốc đã hoạt động tốt trong nhiều năm với Postgres làm cơ sở dữ liệu. Tôi đã thử sqlite_use_immediate_transaction không có hiệu lực.
Trong tất cả các tình huống khác, tôi đã tìm thấy SQLite để thực hiện rất tốt, vì vậy tôi nghi ngờ đây là một sự giám sát trong trình điều khiển DBD, chứ không phải là một vấn đề với SQLite. Đáng buồn thay, mã hiện tại của tôi là một đống kịch bản và mô-đun lớn, vì vậy tôi không có một trường hợp thử nghiệm tệp đơn lẻ.
Bạn có thể cho chúng tôi thấy trường hợp thử nghiệm nhỏ của bạn thể hiện sự cố không? –