No hay tal tabla android_metadata, ¿cuál es el problema?

Estoy copiando una base de datos preexistente a /data/data/packagename/databases usando el código aprendido de using-your-own-sqlite-database-in-android-applications

Después de copiar, recibo el siguiente mensaje de registro al abrir la base de datos:

No hay tal tabla android_metadata

¿Necesito crear una tabla denominada android_metadata? Y lo que los valores que necesito insertar en esta tabla de base de datos

Muchas gracias

De hecho, con un poco más de lectura, he descubierto que necesito usar el indicador SQLiteDatabase.NO_LOCALIZED_COLLATORS al llamar a SQLiteDatabase.openDatabase() – esto ya no causa el problema.

Utilizar

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

o

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

Parece que por alguna razón android requiere que cada base de datos tenga una tabla llamada android_metadata que incluya al menos una configuración regional. El blog de reigndesign que mencionaste te dice cómo crear la tabla y pre-llenarla con una configuración regional.

Compruebe si su base de datos contiene esta tabla y si la tabla tiene algún contenido.

Ya estoy utilizando como se da en ese enlace durante mucho tiempo ..

Funciona .. Checkout de su DB de nuevo la mesa creada o no?

Prefiero instalar SQLite Manager plugin en firefox para la operación de base de datos sqlite .. después de completar todo el proceso como se menciona en el mismo enlace ..

Pedido http://www.devx.com/wireless/Article/40842/1954 .

Contiene todas las operaciones de base de datos.

También podría ser sólo permisos de archivo – el mensaje de error es engañoso. Primero debes encontrar el ID de usuario de la aplicación (esto es suponiendo que tienes acceso root):

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

La salida debería tener el siguiente aspecto:

 <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 aquí es 10002.

Luego arreglar los permisos:

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

Cuando copia la base de datos de su directorio de activos, por ejemplo, debe tener ya la tabla android_metadata creada en ella. Esta tabla debe tener dos columnas:

 _id = an integer value locale = en 

En mi caso, he descubierto que este error ocurrirá si dejo open transaction una open transaction .

En otras palabras: Si se olvida de commit o rollback una transacción, en la próxima vez que ingrese en su aplicación, este error se eleva.

  • Lea el error de la carpeta sqlite from assets
  • Error al descifrar en java
  • Aclaración sobre el row_id devuelto por la instrucción de inserción de sqlite
  • SQLite Transformar columnas en cadena delimitada por comas
  • Copia de seguridad de Android y restauración de la base de datos desde y hacia la tarjeta SD
  • Cómo superar el límite de 65535 bytes para el código de método
  • Insertar o actualizar en SQlite y Android utilizando la base de datos.query ();
  • ContentProvider llamadas atómicas? Guardar en onPause, cargar en OnActivityCreated, datos antiguos
  • ¿Ordenar fechas en la base de datos sqlite?
  • No puede ver datos Sqlite con adaptador simple
  • Cómo cambiar el modo de diario de base de datos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.