У меня есть приложение для Android, и все мои тесты до сих пор проводились на моем телефоне Froyo.Я только что начал тестирование против 1.6 и 2.1 в эмуляторе, и он вылетает при запуске.Он не может найти столбец в одном из моих представлений.
05-17 23:31:31.446: ERROR/AndroidRuntime(198): Caused by:
android.database.sqlite.SQLiteException: no such column:
categoryTable.currentBal: , while compiling:
SELECT SUM(categoryTable.currentBal) FROM catDisplayTable
WHERE masterCategoryName != "__Hidden__"
Схема представления выглядит следующим образом:
CREATE VIEW catDisplayTable AS SELECT categoryTable._id, categoryTable.name,
categoryTable.currentBal, categoryTable.sequence, categoryTable.note,
masterCategoryTable.name AS masterCategoryName FROM categoryTable
LEFT OUTER JOIN masterCategoryTable
ON categoryTable.masterCategoryId = masterCategoryTable._id;
С adb shell
, подключающимся к различным экземплярам эмулятораЯ подтвердил, что (1) правильная схема существует во всех случаях, и (2) в 1.6 и 2.1, SQLite просто не может найти столбцы в этом представлении, даже с чем-то простым, например,
* 1009.*
или
SELECT name FROM catDisplayTable;
Он отлично работает на 2.2.
Поэтому я предполагаю, что что-то изменилось в SQLite между Android 2.1 и 2.2. Этот ответ услужливо дает версии SQLite, которые поставлялись с каждым уровнем API Android.В нем говорится, что SQLite был обновлен с 3.5.9 до 3.6.22 между 2.1 и 2.2.Глядя на историю выпусков SQLite , я не вижу ничего особенно очевидного, что могло бы объяснить разницу.
Может ли кто-нибудь точно определить, что изменилось, и предложить, как мне обойти это,код работает на устройствах до Froyo?