Требуется помощь по внешнему ключу Android SQLite? - PullRequest
1 голос
/ 29 сентября 2011

// HANDLER

private static final String SCRIPT_CREATE_DATABASE = "create table " + MYDATABASE_TABLE + " (" + KEY_ID + " integer primary key autoincrement, " + KEY_CONTENT1 + " text not null);";

private static final String SCRIPT_CREATE_DATABASE2 = "create table " + MYDATABASE_TABLE2 + " (" + KEY_ID2 + " integer foreign key autoincrement, " + KEY_CONTENT2 + " text not null, " + KEY_CONTENT3 + " text not null);";

Есть идеи, что я могу делать неправильно?

// ЖУРНАЛ ОШИБКИ

> 09-29 11:54:40.052: INFO/Database(484): sqlite returned: error

code =

1, msg = около «чужого»: синтаксическая ошибка 09-29 11: 54: 40.052: ОШИБКА / База данных (484): ошибка 1 (рядом с «чужим»: синтаксическая ошибка) на 0x217ba8 при подготовке 'создать таблицу MY_TABLE2 (автоинкремент внешнего ключа _id2, текст Content2 не равен NULL, текст Content3 не равен NULL); '.09-29 11: 54: 40.062: DEBUG / AndroidRuntime (484): выключение ВМ 09-29 11: 54: 40.062: WARN / dalvikvm (484): threadid = 1: поток завершается с исключением из-за отсутствия прерывания (группа = 0x4001d800) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главная 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {sep.com/sep.com.SepActivity}: android.database.sqlite.SQLiteException: рядом с «внешним»: синтаксическая ошибка: создать таблицу MY_TABLE2 (автоинкремент внешнего ключа _id2, текст Content2 не ноль, текст Content3 не ноль);09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в

android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в

android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в

android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033) 09-29 11:54: 40.082: ОШИБКА / AndroidRuntime (484): на android.os.Handler.dispatchMessage (Handler.java:99) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): на android.os.Looper.loop(Looper.java:123) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): на android.app.ActivityThread.main (ActivityThread.java:4627) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime(484): в java.lang.reflect.Method.invokeNative (собственный метод) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в java.lang.reflect.Method.invoke (Method.java:521) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в

com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484)): at dalvik.system.NativeStart.main (собственный метод) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): вызвано: android.database.sqlite.SQLiteException: рядом с «чужим»: синтаксическая ошибка: создатьтаблица MY_TABLE2 (автоинкремент внешнего ключа _id2, текст Content2 не нулевой, текст Content3 не нулевой);09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в android.database.sqlite.SQLiteDatabase.native_execSQL (собственный метод) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в

android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:1727) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): на sep.com.handle $ SQLiteHelper.onCreate (handle.java:104) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в

android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:106) 09-29 11: 54: 40.082:ОШИБКА / AndroidRuntime (484): на sep.com.handle.openToWrite (handle.java:44) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): на sep.com.SepActivity.onCreate (SepActivity.java): 38) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): в

android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 09-29 11: 54: 40.082: ОШИБКА/ AndroidRuntime (484): в

android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627) 09-29 11: 54: 40.082: ОШИБКА / AndroidRuntime (484): ... еще 11

Ответы [ 2 ]

0 голосов
/ 01 августа 2013

попробуйте это ... String CREATE_MATCH = "CREATE TABLE, если не существует" + TABLE_MATCH + "(" + MatchID + "INTEGER PRIMARY KEY AUTOINCREMENT", + MatchTeamA + "INTEGER REFERENCES" + TABLE_TEAM + ","
+ MatchTeamB + "INTEGER REFERENCES" + TABLE_TEAM + ")";

0 голосов
/ 29 сентября 2011
// Creating tables
private static final String SCRIPT_CREATE_DATABASE = "create table " + MYDATABASE_TABLE + " (" + KEY_ID + " integer primary key autoincrement, " + KEY_CONTENT1 + " text not null);";

private static final String SCRIPT_CREATE_DATABASE2 = "create table " + MYDATABASE_TABLE2 + " (" + KEY_ID2 + " integer autoincrement, " + KEY_CONTENT2 + " text not null, " + KEY_CONTENT3 + " text not null, FOREIGN KEY ("+KEY_ID2+") REFERENCES "+PARENT_TABLE+" ("+PARENT_TABLE_PRIMARY+"));";

Внешний ключ имеет ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...