我有一个包含在另一个视图调用中的视图。
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?
答案 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将此警告标记为错误。)
此消息表示已成功创建自动索引。
一个表可以在查询中多次使用,因此它会显示在查询中实际使用它的名称,即使这恰好是一个视图名称。