Android将Sqlite View混淆为Table并试图对其进行自动索引

时间:2015-02-13 12:49:56

标签: android sqlite android-sqlite

我有一个包含在另一个视图调用中的视图。

CREATE VIEW view_A AS SELECT .... FROM table_Gamma

CREATE VIEW view_B AS SELECT .... FROM view_A

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

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

由于你无法在Sqlite中索引视图,所以似乎认为view_A是一个表,并且当它是一个视图时它可以被索引。

注意我也尝试在table_Gamma上创建一个索引,它没有帮助。

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

PRAGMA automatic_index = off;

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

但是每次使用SQLiteOpenHelper时都需要调用它似乎是不切实际的。

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

2 个答案:

答案 0 :(得分:2)

来自这个帖子 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在调用此错误时无法区分视图。

答案 1 :(得分:0)

没有错误。 (唯一的错误是Android将此警告标记为错误。)

此消息表示已成功创建自动索引。

一个表可以在查询中多次使用,因此它会显示在查询中实际使用它的名称,即使这恰好是一个视图名称。