Ошибка доступа к содержимому внешнего файла SQLite

у меня есть следующий код, он дает ошибку времени выполнения, как показано ниже. Почему?

try{
String myPath = DB_PATH + DB_NAME;  
mDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){} 

Во Время Выполнения Ошибка:

:sqlite returned: error code = 1, msg = no such table: android_metadata  
 :SELECT locale FROM android_metadata failed  
 :Failed to setLocale() when constructing, closing the database  
 :android.database.sqlite.SQLiteException: no such table: android_metadata

3 ответов


убедитесь, что имя таблицы android_metadata есть, с именем столбца locale, вы можете вставить en_US в качестве значения для locale.

или, скорее, выполните эту инструкцию sql:

CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US');

Edit: если вы вызываете openDatabase () с помощью SQLiteDatabase.No_localized_collators флаг, вам не нужно будет иметь эту таблицу, иначе вам нужно будет иметь эту таблицу вокруг.

посмотреть setLocale ().


при открытии БД только для чтения и ее еще не созданной используйте NO_LOCALIZED_COLLATORS.

try{
    String myPath = DB_PATH + DB_NAME;  
    mDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY+ SQLiteDatabase.NO_LOCALIZED_COLLATORS);
}catch(SQLiteException e){} 

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


звонок openDatabase() с журнала.Флаг NO_LOCALIZED_COLLATORS,это то, что я сделал, когда я встретил проблему в прошлый раз...