私はアプリケーションのデータベースとしてsqliteを使用しています。これはすべてで正常に機能しますが、データベースからテーブルを削除しようとすると、[ https://bitbucket.org/xerial/sqlite-jdbc ]を使用してこのエラーがスローされます。
エラー
java.sql.SQLException: [SQLITE_LOCKED] A table in the database is locked (database table is locked)
私が使用していますノー自動コミット・モードをので、テーブルを削除する前に、私はすでに持っていたcommitted.Whyこれが起こっているのでしょうか?
考えられる解決策は、接続を閉じて再度開くことですが、他のアクションが同時に行われているため、これを行うことはできません。
****
****
私は以下を使用してテーブルの行をスレッドに数えていました。
connection1.createStatement().executeQuery("SELECT COUNT(*) FROM LIBRARIES;").getInt(1);
しかし、これは決して閉じられなかった結果セットを返すので、データベーステーブルは永久にロックされました!!
これはFAQです。複数のプログラム/スレッドが書き込み中に同時にデータベースにアクセスすることはできません。
スレッドが他のスレッドの終了を待機できるように、タイムアウトを設定する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加