sqlite:在子表中创建外键时没有找到这样的表(父表)错误

时间:2013-02-02 08:58:00

标签: android

我创建了一个Member_Master表,其主键是android的sqlite manager中的member_id,并在子表中创建外键,例如Member_Master中的member_id的Event_Master。我收到no such table found:Member_Master错误 但现在我收到以下错误:

SQLiteManager: CREATE TABLE "main"."Events_Master" ("event_id" NUMERIC PRIMARY KEY  NOT 
NULL ,"event_name" TEXT NOT NULL ,"event_details" TEXT NOT NULL ,"event_start_date" 
DATETIME NOT NULL ,"event_end_date" DATETIME NOT NULL ,"event_time" DATETIME NOT NULL 
,"event_venue" TEXT NOT NULL ,"min_level" NUMERIC,"status_id" NUMERIC,"member_id" 
NUMERIC, foriegn key(member_id) references Member_Master(member_id)ON DELETE CASCADE ON
UPDATE CASCADE) [ near "member_id": syntax error ]

Exception Name: NS_ERROR_FAILURE
Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) 
[mozIStorageConnection.createStatement]

请给我解决方案。由于Member_Master表已创建且字段名称仅为member_id

3 个答案:

答案 0 :(得分:4)

如果你没有得到这样的表异常,原因是没有创建表。可能没有什么理由像

1)您用于创建表的命令是错误的(也可能是输入错误)。

2)您正在现有数据库中添加表

使用特定数量的表创建Database时,无法向其中添加更多表。 如果要添加更多表,则需要从模拟器中卸载应用程序并再次安装应用程序,然后才能通过重新创建数据库来创建新表。 或者升级数据库版本,它应该删除所有表一次,然后重新创建数据库。

答案 1 :(得分:1)

再次尝试uninstalling应用和reinstall。它大部分时间都有效。

答案 2 :(得分:0)

如果你没有得到这样的表异常,那么确定没有创建表。你在DatabaseAdapter类中编写了创建表查询,或者只是从SqliteManager中添加了一个表。 如果要动态创建表,请编写CREATE TABLE查询并执行Query。