我正在尝试创建一个引用我的数据库中另一个表的表,但是我收到了这个错误。
#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;
答案 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
。