在我的数据库上创建表时出错

时间:2012-08-06 02:22:00

标签: mysql sql

我正在尝试创建一个引用我的数据库中另一个表的表,但是我收到了这个错误。

#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 

我已经查看了mySQL参考页面上的错误#1064,但是只是给出了结构轮廓的一个vuage错误。

 Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR)

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

这是我试图执行的代码

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

已经创建了国家/地区表,因此我不完全确定导致问题的原因

任何帮助将不胜感激。

补充说,这不是我定义国家的方式

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

1 个答案:

答案 0 :(得分: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