Android 将 Sqlite View 与 Table 混淆,并尝试对其进行自动索引

标签 android sqlite android-sqlite

我有一个 View 已合并到另一个 View 调用中。

CREATE VIEW view_A AS SELECT .... FROM table_Gamma

CREATE VIEW view_B AS SELECT .... FROM view_A

在 Android 5.0 中,它打印出此错误

E/SQLiteLog (284) view_A(Col1) 上的自动索引

由于您无法在 Sqlite 中对 View 进行索引,因此它似乎认为 view_A 是一个表,并且当它是一个 View 时可以对其进行索引。

注意我还尝试在 table_Gamma 上创建索引,但没有帮助。

您可以使用此 Pragma 调用关闭自动索引

PRAGMA automatic_index = off;

SQLite Database gives warning automatic index on <table_name>(column) After upgrading Android L

但这似乎不切实际,因为每次使用 SQLiteOpenHelper 时都需要调用它。

这是一种常见做法,还是有其他地方可以调用来关闭automatic_index?

最佳答案

来自此线程 Foreign key constraints in Android using SQLite? on Delete cascade

似乎更好的方法是重写SQLiteOpenHelper中的onOpen方法

@Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);
        if (!db.isReadOnly()) {
            db.execSQL("PRAGMA automatic_index = off;");
        }
    }

调用此错误时,我仍然觉得Sqlite3无法区分 View 与 View 是一个bug。

关于Android 将 Sqlite View 与 Table 混淆,并尝试对其进行自动索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28500028/

相关文章:

android - 动画 LinearLayout 背景在 Android 中闪烁

android - 如何在按钮上单击 “Intent”来启动Facebook lite

android - android.performFiltering() 过滤时出现 sql 异常。

android - 在 Android Studio 中编辑外部库

javascript - 如何正确地从 navigator.geolocation 调用 stopObserving()?

java - 从 asset 导入 sqlite 数据库

android - 如何将旧版本的数据库文件导入新版本?

java - TextSwitcherActivity,无法解析符号

android - 我怎样才能得到最后插入的事件的ID

java - Recyclerview 具有水平项目,因为它是一张 table ?