Android не может обновить мою базу данных, когда первый запрос использует базу данных только для чтения - PullRequest
1 голос
/ 04 декабря 2011

Итак, я до сих пор сильно полагался на автоматизированный (ну почти) метод onCreate / onUpgrade моей базы данных SQLite.Все работало нормально, и мне просто пришлось изменить номер версии базы данных, чтобы она автоматически запускалась onUpgrade.

Но теперь я сталкиваюсь с этим исключением, когда пытаюсь добавить столбец вмоя база данных и изменение номера версии:

SQLiteException: Can't upgrade read-only database from version X to Y

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

Так что мне было интересно, как мне решить такую ​​проблему?Должен ли я использовать getWritableDatabase все время?(В качестве обходного пути, это работает для прохождения моего обновления) Конечно, если оба метода существуют, потому что они предназначены для использования, а соединение оптимизировано для доступа только для чтения, когда это необходимо?Я не хотел бы потерять выгоду.

Ответы [ 3 ]

0 голосов
/ 21 января 2014

Некоторое время имя столбца повторяется при создании оператора ..

create table tbl (Col1 TEXT,Col2 INTEGER,Col3 INTEGER,Col1 INTEGER,Col5 INTEGER); 

Как и здесь, Col1 повторяется дважды ...

0 голосов
/ 29 января 2016

В моем случае произошла синтаксическая ошибка: одно из полей было зарезервированным словом SQL. Но чтобы увидеть это сообщение об синтаксисе, мне пришлось добавить

dbHelper.getWritableDatabase().close();

до MainActivity.onCreate().

0 голосов
/ 15 декабря 2011

Обходной путь, который я использовал: в начале моего приложения есть метод, который выполняет только getWritableDatabase() и закрывает его, так что он запускает все необходимые операции создания / обновления, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...