Подтвердить что ты не робот

Нет такой таблицы android_metadata, какая проблема?

Я копирую существующую базу данных до /data/data/packagename/databases, используя код, полученный из using-your-own-sqlite-database-in-android-applications

После копирования я получаю следующее сообщение журнала об открытии базы данных:

Нет такой таблицы android_metadata​​p >

Нужно ли создавать таблицу с именем android_metadata? И какие значения мне нужно вставить в эту таблицу базы данных

Большое спасибо

4b9b3361

Ответ 1

Собственно, с чуть большим чтением я обнаружил, что мне нужно используйте флаг SQLiteDatabase.NO_LOCALIZED_COLLATORS при вызове SQLiteDatabase.openDatabase() - это больше не вызывает проблемы.

Ответ 2

Используйте

SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY);

или

SQLiteDatabase.openDatabase(dbPath, null,SQLiteDatabase.OPEN_READWRITE);

Ответ 3

Похоже, что по какой-то причине андроид требует, чтобы каждая база данных имела таблицу с именем android_metadata, которая включает по крайней мере одну локаль. В блоге reigndesign вы упомянули, как создать таблицу и заполнить ее языковой версией.

Проверьте, содержит ли ваша база данных эту таблицу, а таблица имеет некоторый контент.

Ответ 4

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

Это работает. Проверьте свою базу данных снова, создав таблицу или нет?

Я предпочитаю устанавливать плагин SQLite Manager в firefox для работы с базами данных sqlite.. после завершения всего процесса, упомянутого в той же ссылке..

Оформить заказ http://www.devx.com/wireless/Article/40842/1954.

Он содержит все операции с базой данных.

Ответ 5

Когда вы копируете базу данных из своего каталога ресурсов, например, у вас должна быть уже создана таблица android_metadata. В этой таблице должно быть два столбца:

_id = an integer value
locale = en

Ответ 6

это могут быть просто права доступа к файлам - сообщение об ошибке вводит в заблуждение. сначала вам нужно узнать идентификатор пользователя приложения (предполагается, что у вас есть root-доступ):

$ adb shell grep <packagename> /data/system/packages.xml

вывод должен выглядеть так:

<package name="com.fsck.k9" codePath="/data/app/com.fsck.k9-1.apk" 
nativeLibraryPath="/data/data/com.fsck.k9/lib" 
flags="0" ft="1306ecac340" it="1306ecac9d2" ut="1306ecac9d2"
version="14001" userId="10002">

userId здесь 10002.

затем исправить разрешения:

$ adb shell chown -R 10002:10002 /data/data/<packagename>

Ответ 7

В моем случае я обнаружил, что эта ошибка произойдет, если я оставлю open transaction влево.

Другими словами: если вы забудете транзакцию commit или rollback, в следующий раз, когда вы входите в приложение, эта ошибка повышается.