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 

我在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;
4

1 回答 1

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

于 2012-08-06T02:27:04.537 回答