Причина: android.database.sqlite.SQLiteException: невозможно обновить базу данных только для чтения с версии 0 до 1

Я получаю следующее исключение LogCat при попытке создать базу данных SQLite :

Причина: android.database.sqlite.SQLiteException: невозможно обновить базу данных только для чтения с версии 0 до 1

Вот мой код:

import static android.provider.BaseColumns._ID;
import static org.inetizen.university_timetable.Constants.DAY_OF_WEEK;
import static org.inetizen.university_timetable.Constants.DURATION;
import static org.inetizen.university_timetable.Constants.MODULE_CODE;
import static org.inetizen.university_timetable.Constants.ROOM;
import static org.inetizen.university_timetable.Constants.START_TIME;
import static org.inetizen.university_timetable.Constants.TABLE_NAME;
import static org.inetizen.university_timetable.Constants.TYPE_OF_SESSION;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class TimeTableData extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "timetable.db";
private static final int DATABASE_VERSION = 1;

/** Create a helper object for the TimeTable database **/
public TimeTableData(Context ctx) {
    super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +_ID
            + " INTEGER PRIMARY KEY AUTOINCREMENT " + MODULE_CODE
            + " TEXT NOT NULL " + DAY_OF_WEEK + " TEXT NOT NULL "
            + START_TIME + " INTEGER NOT NULL " + DURATION
            + " INTEGER NOT NULL " + TYPE_OF_SESSION + " TEXT NOT NULL "
            + ROOM + " TEXT NOT NULL )");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}
}

Вот мой LogCat:

05-09 12:32:04.525: I/Database(601): возвращен sqlite: код ошибки = 1, msg = рядом с "module_code": синтаксическая ошибка
05-09 12:32:04.525: E/Database (601): Ошибка 1 (рядом с «module_code»: синтаксическая ошибка) на 0x252588 при подготовке «СОЗДАТЬ ТАБЛИЦУ table_name (_id INTEGER PRIMARY KEY AUTOINCREMENT module_code TEXT NOT NULL day_of_week TEXT NOT NULL start_time INTEGER NOT NULL продолжительность INTEGER NOT NULL type_of_session TEXT NOT NULL room TEXT NOT NULL );'.
05-09 12:32:04.535: E/SQLiteOpenHelper(601): не удалось открыть timetable.db для записи (попробую только для чтения):
05-09 12:32:04.535: E/SQLiteOpenHelper(601): android.database.sqlite.SQLiteException: рядом с "module_code": синтаксическая ошибка: CREATE TABLE table_name (_id INTEGER PRIMARY KEY AUTOINCREMENT module_code ТЕКСТ НЕ NULL day_of_week ТЕКСТ NOT NULL start_time INTEGER NOT NULL продолжительность INTEGER NOT NULL type_of_session TEXT NOT NULL room TEXT NOT NULL );
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.database.sqlite.SQLiteDatabase.native_execSQL(собственный метод)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в org.inetizen.university_timetable.TimeTableData.onCreate(TimeTableData.java:26)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в org.inetizen.university_timetable.TimeTable.getClasses(TimeTable.java:57)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в org.inetizen.university_timetable.TimeTable.onCreate(TimeTable.java:46)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.os.Handler.dispatchMessage(Handler.java:99)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.os.Looper.loop(Looper.java:123)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в android.app.ActivityThread.main(ActivityThread.java:4627)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в java.lang.reflect.Method.invokeNative(собственный метод)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в java.lang.reflect.Method.invoke(Method.java:521)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-09 12:32:04.535: E/SQLiteOpenHelper(601): в dalvik.system.NativeStart.main(собственный метод)
05-09 12:32:04.545: D/AndroidRuntime(601): завершение работы виртуальной машины
05-09 12:32:04.545: W/dalvikvm(601): threadid=1: поток завершается с необработанным исключением (группа=0x4001d800)
05-09 12:32:04.555: E/AndroidRuntime(601): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной
05-09 12:32:04.555: E/AndroidRuntime(601): java.lang.RuntimeException: невозможно запустить активность ComponentInfo{org.inetizen.university_timetable/org.inetizen.university_timetable.TimeTable}: android.database.sqlite.SQLiteException : невозможно обновить базу данных только для чтения с версии 0 до 4: /data/data/org.inetizen.University_timetable/базы данных/timetable.db
05-09 12:32:04.555: E/AndroidRuntime(601): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.os.Handler.dispatchMessage(Handler.java:99)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.os.Looper.loop(Looper.java:123)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.app.ActivityThread.main(ActivityThread.java:4627)
05-09 12:32:04.555: E/AndroidRuntime(601): в java.lang.reflect.Method.invokeNative(собственный метод)
05-09 12:32:04.555: E/AndroidRuntime(601): в java.lang.reflect.Method.invoke(Method.java:521)
05-09 12:32:04.555: E/AndroidRuntime(601): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-09 12:32:04.555: E/AndroidRuntime(601): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-09 12:32:04.555: E/AndroidRuntime(601): в dalvik.system.NativeStart.main(собственный метод)
05-09 12:32:04.555: E/AndroidRuntime(601): причина: android.database.sqlite.SQLiteException: невозможно обновить базу данных только для чтения с версии 0 до 4: /data/data/org.inetizen. University_timetable/базы данных/timetable.db
05-09 12:32:04.555: E/AndroidRuntime(601): в android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:170)
05-09 12:32:04.555: E/AndroidRuntime(601): в org.inetizen.university_timetable.TimeTable.getClasses(TimeTable.java:57)
05-09 12:32:04.555: E/AndroidRuntime(601): в org.inetizen.university_timetable.TimeTable.onCreate(TimeTable.java:46)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-09 12:32:04.555: E/AndroidRuntime(601): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-09 12:32:04.555: E/AndroidRuntime(601): ... еще 11
05-09 12:32:07.325: I/Database(611): возвращен sqlite: код ошибки = 1, msg = рядом с "module_code": синтаксическая ошибка
05–09 12:32:07.325: E/Database (611): Ошибка 1 (рядом с «module_code»: синтаксическая ошибка) на 0x119778 при подготовке «СОЗДАТЬ ТАБЛИЦУ table_name (_id INTEGER PRIMARY KEY AUTOINCREMENT module_code TEXT NOT NULL day_of_week TEXT NOT NULL start_time INTEGER NOT NULL продолжительность INTEGER NOT NULL type_of_session TEXT NOT NULL room TEXT NOT NULL );'.
05-09 12:32:07.335: E/SQLiteOpenHelper(611): не удалось открыть timetable.db для записи (попробую только для чтения):
05-09 12:32:07.335: E/SQLiteOpenHelper(611): android.database.sqlite.SQLiteException: рядом с «module_code»: синтаксическая ошибка: CREATE TABLE table_name (_id INTEGER PRIMARY KEY AUTOINCREMENT module_code TEXT NOT NULL day_of_week TEXT NOT NULL start_time INTEGER NOT NULL продолжительность INTEGER NOT NULL type_of_session TEXT NOT NULL room TEXT NOT NULL );
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.database.sqlite.SQLiteDatabase.native_execSQL (собственный метод)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1727)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в org.inetizen.university_timetable.TimeTableData.onCreate(TimeTableData.java:26)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:106)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:158)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в org.inetizen.university_timetable.TimeTable.getClasses(TimeTable.java:57)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в org.inetizen.university_timetable.TimeTable.onCreate(TimeTable.java:46)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.os.Handler.dispatchMessage(Handler.java:99)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.os.Looper.loop(Looper.java:123)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в android.app.ActivityThread.main(ActivityThread.java:4627)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в java.lang.reflect.Method.invokeNative(собственный метод)
05-09 12:32:07.335:E/SQLiteOpenHelper(611): в java.lang.reflect.Method.invoke(Method.java:521)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-09 12:32:07.335: E/SQLiteOpenHelper(611): в dalvik.system.NativeStart.main(собственный метод)
05-09 12:32:07.345: D/AndroidRuntime(611): завершение работы виртуальной машины
05-09 12:32:07.345: W/dalvikvm(611): threadid=1: поток завершается с необработанным исключением (группа=0x4001d800)
05-09 12:32:07.355: E/AndroidRuntime(611): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной
05-09 12:32:07.355: E/AndroidRuntime(611): java.lang.RuntimeException: невозможно запустить активность ComponentInfo{org.inetizen.university_timetable/org.inetizen.university_timetable.TimeTable}: android.database.sqlite.SQLiteException : невозможно обновить базу данных только для чтения с версии 0 до 4: /data/data/org.inetizen.university_timetable/databases/timetable.db
05-09 12:32:07.355: E/AndroidRuntime(611): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
05-09 12:32:07.355: E/AndroidRuntime(611): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-09 12:32:07.355: E/AndroidRuntime(611): в android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-09 12:32:07.355: E/AndroidRuntime(611): в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-09 12:32:07.355: E/AndroidRuntime(611): в android.os.Handler.dispatchMessage(Handler.java:99)
05-09 12:32:07.355: E/AndroidRuntime(611): на android.os.Looper.loop(Looper.java:123)
05-09 12:32:07.355: E/AndroidRuntime(611): в android.app.ActivityThread.main(ActivityThread.java:4627)
05-09 12:32:07.355: E/AndroidRuntime(611): в java.lang.reflect.Method.invokeNative(собственный метод)
05-09 12:32:07.355: E/AndroidRuntime(611): в java.lang.reflect.Method.invoke(Method.java:521)
05-09 12:32:07.355: E/AndroidRuntime(611): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-09 12:32:07.355: E/AndroidRuntime(611): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-09 12:32:07.355: E/AndroidRuntime(611): в dalvik.system.NativeStart.main(собственный метод)
05-09 12:32:07.355: E/AndroidRuntime(611): причина: android.database.sqlite.SQLiteException: невозможно обновить базу данных только для чтения с версии 0 до 4: /data/data/org.inetizen. University_timetable/базы данных/timetable.db
05-09 12:32:07.355: E/AndroidRuntime(611): в android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:170)
05-09 12:32:07.355: E/AndroidRuntime(611): в org.inetizen.university_timetable.TimeTable.getClasses(TimeTable.java:57)
05-09 12:32:07.355: E/AndroidRuntime(611): в org.inetizen.university_timetable.TimeTable.onCreate(TimeTable.java:46)
05-09 12:32:07.355: E/AndroidRuntime(611): в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-09 12:32:07.355: E/AndroidRuntime(611): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-09 12:32:07.355: E/AndroidRuntime(611): ... еще 11

Есть предложения по устранению исключения?

7
задан Suraj Rao 19 January 2017 в 04:24
поделиться