1

我正在尝试创建一个只有外键而不是主键的表。我收到此错误:

java.lang.IllegalArgumentException: column '_id' does not exist

我看了一个教程,主键必须是_id,没有解释。这很好。但是如果我不想要主键怎么办!如果我只想要一个外键怎么办。我假设这是我的问题所在。下面的模式是我所拥有的。但第三个是我认为这是来自哪里。

database.execSQL("CREATE TABLE events (" +
            "_id INTEGER PRIMARY KEY, event_name TEXT" +
            ")");

database.execSQL("CREATE TABLE reminders(_id INTEGER PRIMARY KEY, event_name TEXT" +
            ")");

database.execSQL("CREATE TABLE events_info (_id INTEGER, event_name TEXT, all_day INTEGER, " +
                    "start_date INTEGER, start_time INTEGER, end_date INTEGER, end_time INTEGER," +
                    " location TEXT, reminder_id INTEGER, notes TEXT, repeat TEXT," +
                    "FOREIGN KEY(_id) REFERENCES events(_id), FOREIGN KEY(reminder_id) REFERENCES reminders(_id))"
                    );
4

2 回答 2

2

你在用CursorAdapter吗?因为如果你是,CursorAdapter该类要求有一个名为的列_id,否则该类将无法工作。一般来说,让您的数据库表包含一个_id为此命名的列通常被认为是一种很好的做法,以防您决定将数据绑定到CursorAdapter它的一个或一个子类。

于 2012-06-03T03:45:35.627 回答
0

发现你的问题:

您的表是events,但您正在尝试使用event...引用它作为外键

REFERENCES event(_id)

应该

REFERENCES events(_id)
于 2012-06-03T04:25:43.853 回答