Tôi muốn mở dữ liệu trang web crom (trong ~/.config/chromium/Default) bằng python-sqlite3 nhưng nó bị khóa bất cứ khi nào crom đang chạy, điều này có thể hiểu được vì các giao dịch có thể được thực hiện. Có cách nào để mở nó trong chế độ chỉ đọc, đảm bảo rằng tôi không thể làm hỏng tính toàn vẹn của db trong khi crom đang sử dụng nó?Có thể mở cơ sở dữ liệu sqlite bị khóa ở chế độ chỉ đọc không?
Trả lời
Tôi tin rằng điều đó phụ thuộc vào khóa được đặt bởi giao dịch.
http://www.sqlite.org/lockingv3.html#shared_lock http://www.sqlite.org/lang_transaction.html
SQLite giao dịch độc quyền khóa cả đọc và ghi nơi giao dịch ngay lập tức và chậm vẫn sẽ cho phép người đọc.
Vì vậy, nó thực sự phụ thuộc vào các giao dịch được Chromium sử dụng.
Chromium đang giữ khóa cơ sở dữ liệu trong một thời gian dài? Kinh quá! Đó thực sự không phải là một ý tưởng hay. Tuy nhiên, không phải lỗi của bạn…
Bạn có thể thử sao chép tệp cơ sở dữ liệu (ví dụ: với tiện ích hệ thống cp
) và sử dụng ảnh chụp đó cho mục đích đọc; SQLite giữ tất cả trạng thái cam kết của nó trong một tệp duy nhất cho mỗi cơ sở dữ liệu. Có, có một cơ hội nhìn thấy một phần giao dịch, nhưng bạn chắc chắn sẽ không có vấn đề về khóa trên Unix như SQLite chắc chắn không sử dụng khóa bắt buộc. (Điều này có thể không hoạt động trên Windows do sơ đồ khóa khác nhau ở đó.)
Nó không nhất thiết phải là lỗi của crom. Đi vòng quanh, tôi thấy [this] (http://mail.python.org/pipermail/python-list/2009-July/1211171.html) thông báo hữu ích chỉ ra rằng thư viện pysqlite không cung cấp giao diện cho tất cả các tính năng của sqlite vì nó tuân thủ DB-API. Vì vậy, nó có thể là khi tôi mở db với pysqlite, tôi đang làm như vậy mà không nói trong chế độ đọc-ghi. Anh ta chỉ ra APSW để sử dụng cờ SQLITE_OPEN_READONLY khi bắt đầu một kết nối. Tôi sẽ kiểm tra nó ra ngay bây giờ. – ladaghini
- 1. Không thể mở cơ sở dữ liệu Sqlite ở chế độ chỉ đọc
- 2. SQLite: cơ sở dữ liệu chỉ đọc
- 3. Mở cơ sở dữ liệu sqlite3 từ python ở chế độ chỉ đọc
- 4. Lỗi khi tách cơ sở dữ liệu SQLite - cơ sở dữ liệu bị khóa
- 5. java + sqlite: làm thế nào để mở cơ sở dữ liệu dưới dạng chỉ đọc?
- 6. Sqlite + C#: Không thể mở tệp cơ sở dữ liệu
- 7. Chế độ xem Sqlite trên nhiều cơ sở dữ liệu
- 8. Cách mở cơ sở dữ liệu SQL Compact chỉ đọc
- 9. kết nối mở sql ở chế độ chỉ đọc
- 10. kết nối cơ sở dữ liệu sqlite/câu hỏi khóa
- 11. Tránh cơ sở dữ liệu sqlite3 bị khóa
- 12. SQLite có khóa tệp cơ sở dữ liệu khi đọc không?
- 13. sqlite không thể mở tệp cơ sở dữ liệu được mã hóa hoặc không phải là cơ sở dữ liệu?
- 14. Tôi có thể mở bảng điều khiển đường ray ở chế độ chỉ đọc không?
- 15. Tệp cơ sở dữ liệu bị khóa
- 16. OperationalError: cơ sở dữ liệu bị khóa
- 17. java.sql.SQLException: cơ sở dữ liệu bị khóa
- 18. Chế độ xem chỉ đọc mạch lạc của cơ sở dữ liệu
- 19. sqlite3: cơ sở dữ liệu chính chỉ đọc và ATTACH
- 20. cơ sở dữ liệu Android SQLite bị hỏng
- 21. Cơ sở dữ liệu Android bị hỏng, nhưng có thể mở trong Trình quản lý SQLite. Có thể phục hồi?
- 22. Python/SQLite - cơ sở dữ liệu bị khóa mặc dù timeout lớn
- 23. bảng cơ sở dữ liệu sqlalchemy bị khóa
- 24. Tệp cơ sở dữ liệu bị khóa không thể giải thích được trong khi thực hiện SQLite cam kết
- 25. Lý do sử dụng cơ sở dữ liệu SQLite có thể đọc được
- 26. Mở một cơ sở dữ liệu chỉ đọc trực tiếp trong thư mục tài sản
- 27. Không thể mở cơ sở dữ liệu-Android
- 28. Tôi có thể sử dụng chế độ xem cơ sở dữ liệu làm mô hình ở Django không?
- 29. DB SQLite (có WAL) bị khóa khi chuẩn bị một thước đo "chọn" - tại sao?
- 30. OperationalError: (OperationalError) không thể mở tệp cơ sở dữ liệu Không có Không
+1: Đây là cách thực hiện nó _within_ SQLite. –