Android One Plus Two: не удалось изменить локаль для БД

Я использую базу данных Sqlite в одном из моих проектов Android. Он отлично работает на всех устройствах, кроме One Plus Two.

Я получаю исключение при попытке открыть базу данных. Это крашлог.

 12-23 19:14:35.235: E/SQLiteLog(3133): (11) database corruption at line 53216 of [9491ba7d73]
12-23 19:14:35.235: E/SQLiteLog(3133): (11) statement aborts at 7: [SELECT locale FROM android_metadata UNION SELECT NULL ORDER BY locale DESC LIMIT 1] 
12-23 19:14:35.237: E/SQLiteDatabase(3133): Failed to open database '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite'.
12-23 19:14:35.237: E/SQLiteDatabase(3133): android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/com.zanec.dryjanuary/databases/alcochange.sqlite' to 'en_US'.

Пожалуйста, нажмите здесь, чтобы увидеть полный журнал сбоев

Я видел здесь и другие подобные вопросы, пробовал почти все ответы, но ничего не получается. Я пробовал это и это.

РЕДАКТИРОВАТЬ: устройство работает на кислородный леденец.

2 ответа

Решение

Я не могу найти причину, по которой у меня возникает эта ошибка, но каким-то образом я избежал этого, выполнив следующее.

Ранее у меня была база данных.sqlite в комплекте, и когда пользователь впервые открыл наше приложение, я скопировал базу данных.sqlite из пакета по правильному пути.

Но теперь я экспортировал необработанные запросы из.sqlite и добавил их вместе с пакетом в виде txt-файла. Теперь, когда пользователь открывает приложение в первый раз, я сначала создаю пустой путь.sqlite в пути, а затем я читаю все запросы.sql из файла txt из пакета и выполняю их над файлом.sqlite в дорожка.

Попробуйте изменить локаль вручную.

Откройте файл базы данных с помощью редактора SQLite, такого как SQLiteStudio, затем откройте android_metadata Таблица. если он не существует, создайте его. (вы можете создать его с помощью редактора запросов (инструменты> открыть редактор запросов) и скопировать / вставить код DDL ниже)

CREATE TABLE android_metadata ( 
    locale TEXT 
);

для вставки записи вы можете скопировать / вставить эту строку в редакторе запросов:

INSERT INTO android_metadata VALUES ('en_us');

Подсказка: чтобы выполнить запрос в SQLiteStudio, нажмите кнопку с молния значок на панели инструментов.

Другие вопросы по тегам