2012-12-09 125 views
6

我正在下面的调试器输出。我不确定缺少什么语法。与外键的语法错误CREATE TABLE

的SQL代码:

CREATE TABLE weeks(Week_Id INTEGER PRIMARY KEY, 
    Day TEXT, 
    Start_Time Text, 
    End_Time Text, 
    Break_Time Text); 
CREATE TABLE projects(Project_Id INTEGER PRIMARY KEY, 
    Name TEXT, 
    Description Text, 
    Client_Name Text, 
    Location Text); 
CREATE TABLE timesheets(Timesheet_Id INTEGER PRIMARY KEY, 
    Project_Id INTEGER, 
    FOREIGN KEY (Project_Id) REFERENCES projects (Project_Id), 
    Week_Id INTEGER, 
    FOREIGN KEY (Week_Id) REFERENCES weeks (Week_Id)); 

的错误归结为:

12-09 12:34:20.782: E/SQLiteLog(6490): (1) near "Week_Id": syntax error 
+0

有人吗?请帮助。谢谢 – Coder

+0

您的FOREIGN KEY声明可能有可能在变量声明之后。值得一试...... – PearsonArtPhoto

+0

请您详细说明一下。我没有明白你的意思。 – Coder

回答

15

请尝试移动FOREIGN KEY列表创建你的变量之后。

CREATE TABLE timesheets(Timesheet_Id INTEGER PRIMARY KEY, 
    Project_Id INTEGER, 
    Week_Id INTEGER, 
    FOREIGN KEY (Project_Id) REFERENCES projects (Project_Id), 
    FOREIGN KEY (Week_Id) REFERENCES weeks (Week_Id)); 
+0

谢谢你的工作。这有什么特别的原因? – Coder

+0

我不是专家,但我猜想FOREIGN KEYs应该是CREATE TABLE字符串中处理的最后一件东西。很高兴它的工作:-) – PearsonArtPhoto

+0

谢谢..我也为我工作 – Pranita

2

据SQLite的语法(http://www.sqlite.org/lang_createtable.html),您也可以写这样的事:

CREATE TABLE timesheets(Timesheet_Id INTEGER PRIMARY KEY, 
Project_Id INTEGER REFERENCES projects (Project_Id), 
Week_Id INTEGER REFERENCES weeks (Week_Id)); 

这将合并声明和外键。