我有一个 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/