我正在尝试创建一个引用数据库中另一个表的表,但收到此错误。
#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引用页面,但它有点错误,只是给出了其结构的轮廓。
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;
Countries 表已创建,因此我不完全确定导致问题的原因
任何帮助将不胜感激。
补充说这不是我定义国家的方式
CREATE TABLE Countries (countryName VARCHAR(20) PRIMARY KEY)engine=innodb;
最佳答案
更新的回复:
将约束定义移出表定义有助于隔离问题:
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
。
关于mysql - 在我的数据库上创建表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821864/