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将此警告标记为错误。)
此消息表示已成功创建自动索引
一个表可以在一个查询中多次使用,因此它会以在查询中实际使用它的名称显示,即使这恰好是一个视图名称。如果关闭自动索引,查看查询计划,它不会使用基础索引。同时,如果您确定一个表而不是视图,它将正确使用现有索引。听起来像个虫子。