안녕하세요
이번에 업데이트 하면서 DB컬럼을 추가하는데요 자꾸 아래처럼 오류가 나네요..
데이터베이스 버전은 5 -> 6으루 올린상태구요
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {int version = oldVersion;
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); Log.d("TAG", "Upgrading form version " + oldVersion + " to " + newVersion + ", 데이터베이스 버전 확인"); if (version != DATABASE_VERSION) { db.execSQL("ALTER TABLE "+DATABASE_TABLE+" ADD COLUMN "+DiaryMemo.WIDGET_ID+" integer");}
onCreate(db);
}
위처럼 했습니다
notes 라는 테이블에 widget_id 를 추가하려고 합니다..
아래는 오류 log입니다
02-25 16:32:28.820: E/Database(627): Failure 1 (no such table: notes) on 0x1e8c08 when preparing 'ALTER TABLE notes ADD COLUMN widget_id integer'.
02-25 16:32:28.830: E/SQLiteOpenHelper(627): Couldn't open diarymemo.db for writing (will try read-only):
02-25 16:32:28.830: E/SQLiteOpenHelper(627): android.database.sqlite.SQLiteException: no such table: notes: ALTER TABLE notes ADD COLUMN widget_id integer
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1763)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at com.ybproject.diarymemo.provider.DiaryMemoProvider$DatabaseHelper.onUpgrade(DiaryMemoProvider.java:97)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:132)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at com.ybproject.diarymemo.provider.DiaryMemoProvider.query(DiaryMemoProvider.java:151)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.content.ContentProvider$Transport.query(ContentProvider.java:187)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.content.ContentResolver.query(ContentResolver.java:262)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.Activity.managedQuery(Activity.java:1550)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at com.ybproject.diarymemo.DiaryMemoList.onResume(DiaryMemoList.java:191)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.Activity.performResume(Activity.java:3832)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.os.Handler.dispatchMessage(Handler.java:99)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.os.Looper.loop(Looper.java:123)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at java.lang.reflect.Method.invokeNative(Native Method)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at java.lang.reflect.Method.invoke(Method.java:507)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-25 16:32:28.830: E/SQLiteOpenHelper(627): at dalvik.system.NativeStart.main(Native Method)
02-25 16:32:28.850: D/AndroidRuntime(627): Shutting down VM
02-25 16:32:28.850: W/dalvikvm(627): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-25 16:32:28.860: E/AndroidRuntime(627): FATAL EXCEPTION: main
02-25 16:32:28.860: E/AndroidRuntime(627): java.lang.RuntimeException: Unable to resume activity {com.ybproject.diarymemo/com.ybproject.diarymemo.DiaryMemoList}: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 5 to 6: /data/data/com.ybproject.diarymemo/databases/diarymemo.db
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.os.Handler.dispatchMessage(Handler.java:99)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.os.Looper.loop(Looper.java:123)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-25 16:32:28.860: E/AndroidRuntime(627): at java.lang.reflect.Method.invokeNative(Native Method)
02-25 16:32:28.860: E/AndroidRuntime(627): at java.lang.reflect.Method.invoke(Method.java:507)
02-25 16:32:28.860: E/AndroidRuntime(627): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-25 16:32:28.860: E/AndroidRuntime(627): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-25 16:32:28.860: E/AndroidRuntime(627): at dalvik.system.NativeStart.main(Native Method)
02-25 16:32:28.860: E/AndroidRuntime(627): Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 5 to 6: /data/data/com.ybproject.diarymemo/databases/diarymemo.db
02-25 16:32:28.860: E/AndroidRuntime(627): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:199)
02-25 16:32:28.860: E/AndroidRuntime(627): at com.ybproject.diarymemo.provider.DiaryMemoProvider.query(DiaryMemoProvider.java:151)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.content.ContentProvider$Transport.query(ContentProvider.java:187)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.content.ContentResolver.query(ContentResolver.java:262)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.Activity.managedQuery(Activity.java:1550)
02-25 16:32:28.860: E/AndroidRuntime(627): at com.ybproject.diarymemo.DiaryMemoList.onResume(DiaryMemoList.java:191)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.Activity.performResume(Activity.java:3832)
02-25 16:32:28.860: E/AndroidRuntime(627): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
02-25 16:32:28.860: E/AndroidRuntime(627): ... 12 more




02-25 16:32:28.830: E/SQLiteOpenHelper(627): Couldn't open diarymemo.db for writing (will try read-only):
02-25 16:32:28.830: E/SQLiteOpenHelper(627): android.database.sqlite.SQLiteException: no such table: notes: ALTER TABLE notes ADD COLUMN widget_id integer
------------------------------------------------------------------------------------------------------------------------
diarymemo.db를 쓰기 모드로 open할수 없다는 것과 notes라는 table이 없다라는 메시지군요.
ALTER TABLE 구문은 이미 존재하는 테이블의 정의를 수정하는 쿼리입니다.
DROP TABLE로 테이블 삭제하신 뒤에 ALTER TABLE 하시면 수정하실 테이블이 없겠죠..