2014-01-16 2 views
6

Существует аналогичная проблема,андроид SQLite: Не удалось изменить локаль для дб на «zh_CN»

android.database.sqlite.SQLiteException: Не удалось изменить локаль для дб причиненных: android.database. sqlite.SQLiteDatabaseCorruptException: диск базы данных изображений уродливы (код 11)

Failed to change locale for db '/data/data/my.easymedi.controller/databases/EasyMediInfo.db' to 'en_US'

Но моя база данных создается андроида через SQLiteOpenHelper. И он появляется в нескольких устройствах. Я хочу знать, что может вызвать эту проблему, поскольку я даже не могу воспроизвести ее. Как я могу решить эту проблему? Спасибо большое!

android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/com.android.settings/databases/myDB.db' to 'zh_CN'. 
at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:386) 
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:218) 
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:833) 
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221) 
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224) 
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 
at com.example.optimizecenter.packages.e.mO(PackagesManager.java:150) 
at com.example.optimizecenter.packages.PackageSyncService.onHandleIntent(PackageSyncService.java:24) 
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.os.HandlerThread.run(HandlerThread.java:60) 
Caused by: android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed (code 11) 
at android.database.sqlite.SQLiteConnection.nativeExecuteForString(Native Method) 
at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:634) 
at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:367) 
... 18 more 

Это мой вспомогательный класс.

public class PackageDataBaseHelper extends SQLiteOpenHelper { 

    public PackageDataBaseHelper(Context context) { 
     super(context, PackageColumns.DB_NAME, null, PackageColumns.DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     StringBuilder sb = new StringBuilder(); 
     sb.append("create table "); 
     sb.append(PackageColumns.TABLE_PACKAGE); 
     sb.append(" ("); 
     sb.append(PackageColumns._ID + " integer primary key autoincrement, "); 
     sb.append(PackageColumns.COLUMN_APPLICATION_LABEL + " TEXT ,"); 
     sb.append(PackageColumns.COLUMN_PACKAGE_NAME + " TEXT ,"); 
     sb.append(PackageColumns.COLUMN_VERSION_NAME + " TEXT ,"); 
     sb.append(PackageColumns.COLUMN_VERSION_CODE + " INTEGER ,"); 
     sb.append(PackageColumns.COLUMN_IC_LAUNCHER + " BOLD"); 
     sb.append(");"); 
     db.execSQL(sb.toString()); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // ignore 
    } 

} 
+0

Эй, какое-либо обновление по этой проблеме? –

ответ

2
SQLiteDatabase db=SQLiteDatabase.openDatabase("/data/data/com.android.settings/databases/myDB.db", null,SQLiteDatabase.NO_LOCALIZED_COLLATORS|SQLiteDatabase.CREATE_IF_NECESSARY); 

Попробуйте этот образец кода в код ..

Если у вас есть SQLite браузер, открыть базу данных .. В вашей базе данных, локаль android_metadata таблицы, кажется, не быть en_US

+1

С моим кодом многие устройства работают нормально. Но некоторые пользователи сообщают об этой ошибке, я не могу ее воспроизвести. locale of android_metadata изменится, когда я изменю язык телефона в настройках Android, и он работает хорошо. Я даже удаляю языковой стандарт или заполняю словами бессмысленного слова, APP хорошо работает и меняет его на текущий язык телефона ... – efei

+0

какие устройства получили ошибку? – lynndragon

+1

XiaoMi 2s. Но есть только несколько сотен, ohter миллионов Xiaomi 2S в порядке ... – efei

Смежные вопросы