简体   繁体   English

无法打开数据库文件(代码14):,编译时:PRAGMA journal_mode

[英]Unable to open database file (code 14): , while compiling: PRAGMA journal_mode

Here is what I am doing in my DatabaseHelper class. 这是我在DatabaseHelper类中所做的事情。

public DatabaseHelper(Context context)
    {
        super(context, DATABASENAME, null, VERSION);
        context.openOrCreateDatabase(DATABASENAME, context.MODE_PRIVATE, null);

    }


    @Override
    public void onCreate(SQLiteDatabase db) {

        String queryProductsAllData = "CREATE TABLE `"+TABLE_PRODUCTS+"` (\n" +
                        "\t`"+COLUMN_BRANDID                +"`\tINTEGER,\n" +
                        "\t`"+COLUMN_PRODUCTID              +"`\tINTEGER,\n" +
                        "\t`"+COLUMN_PRODUCTCODE            +"`\tINTEGER,\n" +
                        "\t`"+COLUMN_PIECESINCASE           +"`\tINTEGER,\n" +
                        "\t`"+COLUMN_PRODUCT_STOCK_UNITS    +"`\tINTEGER DEFAULT 0,\n" +
                        "\t`"+COLUMN_PRODUCTADDEDBY         +"`\tINTEGER,\n" +
                        "\t`"+COLUMN_BRANDCODE              +"`\tTEXT,\n" +
                        "\t`"+COLUMN_BRANDNAME              +"`\tTEXT,\n" +
                        "\t`"+COLUMN_PRODUCTNAME            +"`\tTEXT,\n" +
                        "\t`"+COLUMN_PRODUCTSHORTNAME       +"`\tTEXT,\n" +
                        "\t`"+COLUMN_PIECENETVOLUME         +"`\tTEXT,\n" +
                        "\t`"+COLUMN_PRICEPOINT             +"`\tTEXT,\n" +
                        "\t`"+COLUMN_TRADEPRICEPERCASE      +"`\tTEXT,\n" +
                        "\t`"+COLUMN_TRADEPRICEPERPIECE     +"`\tTEXT,\n" +
                        "\t`"+COLUMN_RETAILPRICEPERPIECE    +"`\tTEXT,\n" +
                        "\t`"+COLUMN_SERVICECHARGEPERPIECE  +"`\tTEXT,\n" +
                        "\t`"+COLUMN_SPDSHOPPERPRICEPERPIECE+"`\tTEXT,\n" +
                        "\t`"+COLUMN_JTAXPERCASE            +"`\tTEXT,\n" +
                        "\t`"+COLUMN_SPDPRICEPERCASE        +"`\tTEXT,\n" +
                        "\t`"+COLUMN_PRODUCTADDEDON         +"`\tTEXT,\n" +
                        "\t`"+COLUMN_PRODUCTSTATUS          +"`\tINTEGER\n" +
                        ");";
    db.execSQL(queryProductsAllData);

    }

 @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_PRODUCTS);
}
`

Here is the log I am getting. 这是我得到的日志。

 12-28 10:27:52.509    2672-2672/? E/SQLiteLog﹕ (14) cannot open file at line 31278 of [2ef4f3a5b1]
12-28 10:27:52.509    2672-2672/? E/SQLiteLog﹕ (14) os_unix.c:31278: (24) open(/data/user/0/com.vergesystems.heartbeat/databases/Heart_Beat-journal) -
12-28 10:27:52.510    2672-2672/? E/SQLiteLog﹕ (14) cannot open file at line 31278 of [2ef4f3a5b1]
12-28 10:27:52.510    2672-2672/? E/SQLiteLog﹕ (14) os_unix.c:31278: (24) open(/data/user/0/com.vergesystems.heartbeat/databases/Heart_Beat-journal) -
12-28 10:27:52.510    2672-2672/? E/SQLiteLog﹕ (14) unable to open database file
12-28 10:27:52.512    2672-2672/? E/SQLiteDatabase﹕ Failed to open database '/data/user/0/com.vergesystems.heartbeat/databases/Heart_Beat'.
    android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14): , while compiling: PRAGMA journal_mode
            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
            at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:632)
            at android.database.sqlite.SQLiteConnection.setJournalMode(SQLiteConnection.java:318)
            at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:292)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:213)
            at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191)
            at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
            at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
            at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806)
            at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791)
            at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
            at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:571)
            at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:269)
            at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
            at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
            at com.vergesystems.databases.ProductsTableHelper.<init>(ProductsTableHelper.java:29)

I found what was wrong with my code. 我发现我的代码出了什么问题。 I was initialising TableHelper class in other helper classes' constructor and that was calling DatabaseHelper's onCreate again so that was making it lock the database. 我正在其他帮助器类的构造函数中初始化TableHelper类,并且再次调用DatabaseHelper的onCreate,这样就锁定了数据库。

Removed TableHelper initialisation from the other TableHelper's constructor and put it in method where it was needed. 从其他TableHelper的构造函数中删除了TableHelper初始化,并将其放在需要它的方法中。

Thank you. 谢谢。

Remove the 去除

context.openOrCreateDatabase(DATABASENAME, context.MODE_PRIVATE, null);

You're using SQLiteOpenHelper and it does the database file management for you. 您正在使用SQLiteOpenHelper ,它会为您执行数据库文件管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android.database.sqllite.SQLiteDatabaseLocked异常:数据库已锁定(代码5):,正在编译:PRAGMA journal_mode - Android.database.sqllite.SQLiteDatabaseLocked Exception:database is locked (code 5): ,while compiling:PRAGMA journal_mode SQLiteDiskIOException:磁盘 I/O 错误(代码 1802):,编译时:PRAGMA journal_mode - SQLiteDiskIOException: disk I/O error (code 1802): , while compiling: PRAGMA journal_mode “ SQLiteCantOpenDatabaseException:无法打开数据库文件(代码14)” - “SQLiteCantOpenDatabaseException: unable to open database file (code 14)” 无法打开数据库文件(代码14)beginTransactionUnchecked - unable to open database file (code 14) beginTransactionUnchecked Android SQLite - 改变 journal_mode - Android SQLite - changing journal_mode Android SQLite数据库异常 - 代码14(无法打开数据库文件) - Android SQLite database exception - code 14 (unable to open database file) 代码14:无法打开数据库 - Code 14: Unable to open database android SQLiteCantOpenDatabaseException:无法打开数据库文件(代码14) - android SQLiteCantOpenDatabaseException: unable to open database file (code 14) SQLite无法在频繁的“SELECT”查询中打开数据库文件(代码14) - SQLite unable to open database file (code 14) on frequent "SELECT" query 任何插入后,SQLiteDatabase均被锁定“ SQLiteCantOpenDatabaseException:无法打开数据库文件(代码14)” - SQLiteDatabase locked after any insert “SQLiteCantOpenDatabaseException: unable to open database file (code 14)”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM