I read the solution from Failed to change the locale for db '/data/data/my.easymedi.controller/databases/EasyMediInfo.db' in 'en_US' but this does not help me. I still have the same error.
This is my DBHelper class. Could you look into it and help me?
package com.example.mgr; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Date; import java.util.ArrayList; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper{
It worked fine, but I did some database updates and then stopped working. I assume this is the source of this error, but I'm not sure.
Thanks in advance!
At your request:
I have a createDataBase method in my MainActivity class, as you can see below:
package com.example.mgr; import java.io.IOException; import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Adapter; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { SharedPreferences preferences; TextView tv; Adapter adapter; SQLiteDatabase as; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button infDlaStudButton = (Button) findViewById(R.id.infDlaStud); Button infDlaKandButton = (Button) findViewById(R.id.infDlaKand); preferences = PreferenceManager.getDefaultSharedPreferences(this); DBHelper myDbHelper = new DBHelper(this); infDlaStudButton.setOnClickListener(this); infDlaKandButton.setOnClickListener(this); infDlaKandButton.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { ble(); } }); infDlaStudButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ble(); } }); try { myDbHelper.createDataBase(); System.out.println("Stworzyลam bazฤ danych"); } catch (IOException ioe) { throw new Error("nie moge to create database"); } System.out.println("bede otwierdal baze danych w glowej metodzie"); myDbHelper.openDataBase(); } void ble() { Intent intent = new Intent(); intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent); } @Override public void onClick(View arg0) { Toast.makeText(this, "ble", Toast.LENGTH_LONG).show();
Yes, the table android_metadata strong> exists in the database and has the value "en_US".
I created a new, very simple Drzewo.db database. When this table has only 2 tables: andoid_metadata strong> and the other ( Przyjeci ), then everything works! But later I added a new table and tried to update, and I have the same error.
There are my logs (from this new database):
12-04 19:58:41.959: E/SQLiteLog(2293): (11) database corruption at line 50741 of [00bb9c9ce4] 12-04 19:58:41.959: E/SQLiteLog(2293): (11) database corruption at line 50780 of [00bb9c9ce4] 12-04 19:58:41.969: E/SQLiteLog(2293): (11) statement aborts at 16: [SELECT locale FROM android_metadata UNION SELECT NULL ORDER BY locale DESC LIMIT 1] 12-04 19:58:42.056: E/SQLiteDatabase(2293): Failed to open database '/data/data/com.example.mgr/databases/Drzewo.db'. 12-04 19:58:42.056: E/SQLiteDatabase(2293): android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/com.example.mgr/databases/Drzewo.db' to 'en_US'. 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:386) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:218) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:854) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:229) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at com.example.mgr.DBHelper.createDataBase(DBHelper.java:53) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at com.example.mgr.MainActivity.onCreate(MainActivity.java:73) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.Activity.performCreate(Activity.java:5104) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.ActivityThread.access$600(ActivityThread.java:141) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.os.Handler.dispatchMessage(Handler.java:99) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.os.Looper.loop(Looper.java:137) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.app.ActivityThread.main(ActivityThread.java:5041) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at java.lang.reflect.Method.invokeNative(Native Method) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at java.lang.reflect.Method.invoke(Method.java:511) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at dalvik.system.NativeStart.main(Native Method) 12-04 19:58:42.056: E/SQLiteDatabase(2293): Caused by: android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed (code 11) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnection.nativeExecuteForString(Native Method) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:634) 12-04 19:58:42.056: E/SQLiteDatabase(2293): at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:367) 12-04 19:58:42.056: E/SQLiteDatabase(2293): ... 28 more 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): Couldn't open Drzewo.db for writing (will try read-only): 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/com.example.mgr/databases/Drzewo.db' to 'en_US'. 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:386) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:218) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:854) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:229) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at com.example.mgr.DBHelper.createDataBase(DBHelper.java:53) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at com.example.mgr.MainActivity.onCreate(MainActivity.java:73) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.Activity.performCreate(Activity.java:5104) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.ActivityThread.access$600(ActivityThread.java:141) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.os.Handler.dispatchMessage(Handler.java:99) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.os.Looper.loop(Looper.java:137) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.app.ActivityThread.main(ActivityThread.java:5041) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at java.lang.reflect.Method.invokeNative(Native Method) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at java.lang.reflect.Method.invoke(Method.java:511) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at dalvik.system.NativeStart.main(Native Method) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): Caused by: android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed (code 11) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnection.nativeExecuteForString(Native Method) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnection.executeForString(SQLiteConnection.java:634) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): at android.database.sqlite.SQLiteConnection.setLocaleFromConfiguration(SQLiteConnection.java:367) 12-04 19:58:42.219: E/SQLiteOpenHelper(2293): ... 28 more 12-04 19:58:42.259: D/AndroidRuntime(2293): Shutting down VM 12-04 19:58:42.280: W/dalvikvm(2293): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 12-04 19:58:42.359: E/AndroidRuntime(2293): FATAL EXCEPTION: main 12-04 19:58:42.359: E/AndroidRuntime(2293): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mgr/com.example.mgr.MainActivity}: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 5 to 6: Drzewo.db 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.ActivityThread.access$600(ActivityThread.java:141) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.os.Handler.dispatchMessage(Handler.java:99) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.os.Looper.loop(Looper.java:137) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.ActivityThread.main(ActivityThread.java:5041) 12-04 19:58:42.359: E/AndroidRuntime(2293): at java.lang.reflect.Method.invokeNative(Native Method) 12-04 19:58:42.359: E/AndroidRuntime(2293): at java.lang.reflect.Method.invoke(Method.java:511) 12-04 19:58:42.359: E/AndroidRuntime(2293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 12-04 19:58:42.359: E/AndroidRuntime(2293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 12-04 19:58:42.359: E/AndroidRuntime(2293): at dalvik.system.NativeStart.main(Native Method) 12-04 19:58:42.359: E/AndroidRuntime(2293): Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 5 to 6: Drzewo.db 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:245) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188) 12-04 19:58:42.359: E/AndroidRuntime(2293): at com.example.mgr.DBHelper.createDataBase(DBHelper.java:53) 12-04 19:58:42.359: E/AndroidRuntime(2293): at com.example.mgr.MainActivity.onCreate(MainActivity.java:73) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.Activity.performCreate(Activity.java:5104) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 12-04 19:58:42.359: E/AndroidRuntime(2293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 12-04 19:58:42.359: E/AndroidRuntime(2293): ... 11 more
I am working on eclipse juno + Android 4.2.2