【问题标题】:SQLite database is locked?SQLite 数据库被锁定?
【发布时间】:2015-08-24 15:25:48
【问题描述】:

我刚刚尝试在 SQLite 数据库中添加行,文本部分包含“/”字符。

这就是我的连接方式:

private SQLiteDatabase db;

this.db = this.getWritableDatabase();


    db.beginTransaction();

    ..............................
    insertion stuffs
    ..............................

    db.setTransactionSuccessful();
    db.endTransaction();

当我尝试插入新行时,应用程序崩溃并在 logcat 上给我这个错误:

08-24 19:01:09.477  27064-27064/? E/SQLiteLog﹕ (10) POSIX Error : 11 SQLite Error : 3850
08-24 19:01:09.477  27064-27064/? E/SQLiteLog﹕ (5) database is locked
Process: .MyService, PID: 17827
android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode

是因为斜线字符还是什么?在插入一行之前它运行良好还是我的表损坏了?

【问题讨论】:

  • 您确定在添加之前关闭了所有其他数据库实例吗?
  • @tyczj,我添加了我使用的 sqlite 事务方法。

标签: android database sqlite process sql-insert


【解决方案1】:

我想你忘了close the connection to database,并调用方法endTransaction()

【讨论】:

  • 相反的顺序:你先结束事务,然后关闭连接。
  • 我实际上做了 endTransaction,但不知何故我不能再产生这个错误了。
  • @EspeH 我认为这是一个导致数据库锁定的待处理事务。
猜你喜欢
  • 2011-10-30
  • 1970-01-01
  • 2011-08-05
  • 2015-05-11
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多