2012-08-06 58 views
0

我想创建一个引用另一个表格在我的数据库表,但我收到此错误。错误在我的数据库上创建表格

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UInt32 PRIMARY KEY, name VARCHAR(20), handle VARCHAR(20), countryName VARCHAR(20' at line 1 

我有看错误#1064 mySQL refrence页面上,但其只是给它的结构的概略的vuage错误的升技。

Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR) 

Message: %s near '%s' at line %d 

这是我试图执行

​​

Countries表已经创建的代码,所以我不完全知道是什么原因造成的问题

任何帮助将不胜赞赏。

添加不,这是我如何定义国家

CREATE TABLE Countries (countryName VARCHAR(20) PRIMARY KEY)engine=innodb; 
+0

难道是用户是一个保留关键字吗? – 2012-08-06 02:25:41

+0

hrmmm ..它可能是..我wouldnt知道不要做很多的SQL只是玩弄一个想法......但通过你的语气,我猜测它是..哪一个会有道理......大声笑即时去尝试使用不同的表名称...大声笑 – HurkNburkS 2012-08-06 02:26:57

+0

hrmm ..不,我已经改变了表的名称,我仍然遭受同样的问题.. – HurkNburkS 2012-08-06 02:29:40

回答

1

更新的响应:

移动约束定义了表定义的帮助隔离问题:

CREATE TABLE User(
    userID UInt32 PRIMARY KEY 
    ,name VARCHAR(20) 
    ,handle VARCHAR(20) 
    ,countryName VARCHAR(20) 
)engine=innodb; 


ALTER TABLE user ADD CONSTRAINT user_country_name_fk FOREIGN KEY(countryName) REFERENCES Countries(SID); 

创建表故障是由于使用UInt32数据类型造成的。更改为int,表创建成功。

外键约束指的是Countries中的错误列。它指的是SID,但需要参考countryName

+0

好吧,我会尝试它出来..即时通讯不知道这是一个内联之间的区别是什么。 – HurkNburkS 2012-08-06 02:36:08

+0

好吧现在就试试这个..尝试第一个并遇到问题..但会尽快尝试第二个解决方案。 – HurkNburkS 2012-08-06 02:38:41

+0

啊,所以它似乎即使没有FK我得到的错误.. **错误 SQL查询: CREATE TABLE USER(userID UInt32 PRIMARY KEY,name VARCHAR(20),handle VARCHAR(20),countryName VARCHAR(20) )ENGINE = INNODB MySQL说: #1064 - 您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在'UInt32 PRIMARY KEY ,名称VARCHAR(20) ,处理VARCHAR(20) ,countryName V'在第2行** – HurkNburkS 2012-08-06 02:41:31