Tôi đã gặp một vấn đề lạ về sqlite3. Tôi thu được các kết nối khác nhau của cùng một tệp cơ sở dữ liệu bằng cách sử dụng phương thức open(). kết nối 1 bắt đầu một giao dịch và kết nối 2 bắt đầu một giao dịch khác, đó là cập nhật một số bản ghi của một bảng. Sau đó kết nối 1 cam kết giao dịch, tiếp theo là kết nối 2 cam kết giao dịch của nó. Nhưng tôi thấy rằng lệnh cập nhật của kết nối 2 không bao giờ thực sự cập nhật bản ghi trong cơ sở dữ liệu. Không có ngoại lệ nào được ném trong quy trình này. Tôi không biết tại sao vấn đề lại xảy ra. Bất cứ ai có thể giải thích lý do cho tôi?Các kết nối khác nhau của cùng một cơ sở dữ liệu của sqlite có bắt đầu giao dịch đồng thời không?
7
A
Trả lời
14
Nếu bạn đọc tài liệu SQLite, bạn sẽ thấy nó hỗ trợ nhiều kết nối chỉ đọc, bạn không thể ghi vào cơ sở dữ liệu từ kết nối mulitple, vì nó không được thiết kế cho điều đó.
5
Trừ khi bạn sử dụng BEGIN NGAY để bắt đầu giao dịch, bạn có nguy cơ phải rollback và thử chúng. BEGIN không thực hiện bất kỳ khóa nào; UPDATE hoặc INSERT tiếp theo nhận khóa và bạn cần kiểm tra mã kết quả để xem chúng có bị lỗi không. Xem trang này trên transactions và trang này trên locks.
Các vấn đề liên quan
- 1. Tôi có thể đọc và ghi vào cơ sở dữ liệu SQLite đồng thời từ nhiều kết nối không?
- 2. Nhiều lệnh giao dịch SQL qua các kết nối cơ sở dữ liệu khác nhau
- 3. kết nối cơ sở dữ liệu sqlite/câu hỏi khóa
- 4. Kết nối cơ sở dữ liệu không đồng nhất
- 5. DBI: Kết nối với một cơ sở dữ liệu khác nếu cơ sở dữ liệu đầu tiên không tồn tại
- 6. Quy mô cơ sở dữ liệu SQLite trong bộ nhớ có đồng thời không?
- 7. Cách tạo nhiều kết nối cơ sở dữ liệu cho các cơ sở dữ liệu khác nhau trong java
- 8. Kết nối cơ sở dữ liệu CodeIgniter không được đóng
- 9. Cơ sở dữ liệu và kết nối
- 10. Một số giải thích về mức độ cách ly khác nhau trong giao dịch cơ sở dữ liệu?
- 11. Giữ mở một kết nối cơ sở dữ liệu MongoDB
- 12. Mở và đóng kết nối cơ sở dữ liệu bên trong giao dịch
- 13. Sao chép ngang hàng của cơ sở dữ liệu sqlite
- 14. PHP: Mô phỏng nhiều kết nối MySQL với cùng một cơ sở dữ liệu
- 15. Cơ sở dữ liệu SQLite của Android: chèn chậm
- 16. Đồng thời cơ sở dữ liệu an toàn trong ROR
- 17. Các kết nối cơ sở dữ liệu và xoắn Xoắn
- 18. Cơ sở dữ liệu đồng bộ hóa sqlite với mysql
- 19. cơ sở dữ liệu sqlite ios7 với WAL không bao giờ đồng bộ hóa tệp cơ sở dữ liệu chính
- 20. kết nối có một cơ sở dữ liệu từ xa
- 21. Sự cố đồng thời với nhiều giao dịch cơ sở dữ liệu độc lập?
- 22. Nhiều kết nối cơ sở dữ liệu đồng thời trong drupal 7
- 23. Giao dịch cơ sở dữ liệu Magento
- 24. Bộ nhớ giao dịch phần mềm có giống giao dịch cơ sở dữ liệu không?
- 25. Cơ sở dữ liệu SQLite của Android Sau khi xóa bảng, id có bắt đầu từ 1 không?
- 26. Không thể thực hiện thao tác vì không có giao dịch hiện tại khi chèn vào cơ sở dữ liệu
- 27. Node.js + postgres quản lý cơ sở dữ liệu giao dịch
- 28. Lỗi khi tách cơ sở dữ liệu SQLite - cơ sở dữ liệu bị khóa
- 29. Cùng một truy vấn trên cùng một cơ sở dữ liệu cho kết quả khác nhau trên OAS 10.1.3
- 30. gì nếu tôi không đóng kết nối cơ sở dữ liệu SQLite bằng Python
Tuy nhiên, bạn có thể có hai giao dịch ghi đồng thời, đó là nguyên nhân gây ra sự cố. –
Vì vậy, nếu có một giao dịch thực hiện thao tác ghi vào cơ sở dữ liệu, bất kỳ thao tác ghi nào khác cũng không thể sửa đổi cơ sở dữ liệu, bất kể các hoạt động này nằm trong một giao dịch hay không? – user26404
Tôi có thể thực hiện thao tác chọn khi có kết nối khác thực hiện thao tác ghi (chèn, cập nhật) cùng một lúc không? – user26404