Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android将Sqlite视图混淆为表,并试图对其进行自动索引_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android将Sqlite视图混淆为表,并试图对其进行自动索引

Android将Sqlite视图混淆为表,并试图对其进行自动索引,android,sqlite,android-sqlite,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中,它会打印出这个错误 E/SQLiteLog(284)视图上的自动索引\u A(Col1) 因为不能在Sqlite中为视图编制索引,所以似乎认为视图_A是一个表,当它是一个视图时,它可以被索引 注意,我还尝试在表_Gamma上创建索引,但

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

CREATE VIEW view_A AS SELECT .... FROM table_Gamma

CREATE VIEW view_B AS SELECT .... FROM view_A
在Android 5.0中,它会打印出这个错误

E/SQLiteLog(284)视图上的自动索引\u A(Col1)

因为不能在Sqlite中为视图编制索引,所以似乎认为视图_A是一个表,当它是一个视图时,它可以被索引

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

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

PRAGMA automatic_index = off;

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

这是一种常见的做法,还是有其他地方可以调用以关闭自动索引?

从此线程开始

似乎更好的方法是覆盖SQLiteOpenHelper中的onOpen方法

@Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);
        if (!db.isReadOnly()) {
            db.execSQL("PRAGMA automatic_index = off;");
        }
    }
调用此错误时,我仍然觉得Sqlite3无法区分视图和视图是一个错误。

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

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


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

如果关闭自动索引,查看查询计划,它不会使用基础索引。同时,如果您确定一个表而不是视图,它将正确使用现有索引。听起来像个虫子。