2010-04-05 32 views
9

Chúng tôi đang sử dụng sqlite056.jar trong mã của chúng tôi. Trong khi chèn vào cơ sở dữ liệu trong hàng loạt, chúng tôi đang nhận được ngoại lệ trên dòng khi chúng tôi cam kết.java.sql.SQLException: cơ sở dữ liệu bị khóa

Ngành Mã

<object of Connection>.commit(); 
<object of Connection>.setAutoCommit(true); 

Exception

java.sql.SQLException: database locked 

Trả lời

2

Dường như nhiều hơn một quá trình đang cố gắng sửa đổi cơ sở dữ liệu. Bạn chỉ có thể có một kết nối mở tại bất kỳ thời điểm nào. Thêm thông tin cơ bản về vấn đề này có thể giúp chúng tôi cung cấp cho bạn câu trả lời cụ thể hơn.

+0

chúng ta có thể làm việc với nhiều bảng cơ sở dữ liệu cùng lúc với đối tượng cùng một kết nối cơ sở dữ liệu giả sử tôi đã chèn giá trị trong bảng 1 và tại cùng một thời điểm giá trị cũng chèn trong bảng 2 của cơ sở dữ liệu với cùng một đối tượng dữ liệu kết nối cơ sở. – rajkumari

+0

hoặc là cơ sở dữ liệu bị khóa ngoại lệ xảy ra do obj Connection.commit() dòng – rajkumari

7

Đọc cơ sở dữ liệu SQLite đặt trạng thái khóa thành Được chia sẻ. Nhiều người đọc có thể hoạt động cùng một lúc.

Ghi vào cơ sở dữ liệu SQLite đặt trạng thái khóa thành Độc quyền. Không có quy trình nào khác có thể hoạt động tại thời điểm đó.

Bạn có thể tìm thấy giải thích chi tiết về http://www.sqlite.org/lockingv3.html

+0

Tôi đã có lỗi tương tự khi chạy một applet (truy cập một db sqlite) với appletviewer. Nhưng chỉ khi chạy dưới một jvm 64bit. Chuyển sang một jvm 32bit làm việc tốt (cửa sổ). Có lẽ trình điều khiển 64bit không được biên dịch vào trong lọ. – dgorissen

9

Kết nối cần được đóng sau mỗi truy vấn. Nếu bất kỳ kết nối nào vẫn tồn tại. Tôi đã gặp lỗi tương tự trên các ứng dụng Java trên máy tính để bàn, hiện đã được giải quyết.

0

Trong trường hợp của tôi, tôi quên thêm mệnh đề WHERE trong truy vấn UPDATE của tôi và cung cấp cho "cơ sở dữ liệu bị khóa" lỗi.

Kiểm tra kỹ truy vấn của bạn.

Edit: Tôi quên để cho biết rằng tôi đã sử dụng một loại truy vấn UPDATE nơi tôi thay đổi nhiều thuộc tính:

Người dùng UPDATE Set weight = 160, desiredWeight = 145 WHERE id = 1;

+1

** Một câu hỏi rất cũ ** - nhưng cảm ơn vì đã cố gắng trả lời câu hỏi đó. Trong trường hợp cụ thể này, bạn không có bất kỳ ý tưởng gì về câu lệnh SQL trong câu hỏi giống như - và do đó gợi ý rằng truy vấn là 'UPDATE' với thiếu' WHERE' xuất hiện như là công việc đoán. Điều gì sẽ thích hợp hơn trong trường hợp này là yêu cầu (trong một bình luận) truy vấn 'SQL' trông như thế nào - gợi ý rằng nguyên nhân có thể giống như một mệnh đề' WHERE' bị thiếu. – ishmaelMakitla

+0

Tôi đã thêm chỉnh sửa vào bài đăng của mình. Tôi nghĩ rằng nó không quan trọng câu hỏi bao lâu, mọi người googles cho vấn đề này, giống như tôi. Lời chào hỏi! –

+0

Điểm tốt. Về câu lệnh SQL, tôi có nghĩa là bản thân câu hỏi không bao gồm câu lệnh SQL, do đó bạn sẽ không biết (không hỏi nó) nó trông như thế nào. Nhưng điểm tốt về trả lời câu hỏi cũ - điểm tốt. – ishmaelMakitla

Các vấn đề liên quan