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

标签 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引用页面,但它有点错误,只是给出了其结构的轮廓。

 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/

相关文章:

MySQL 中的 Java BCryptPasswordEncoder 等价物

c# - Linq - 在一个查询中计算多个平均值

mysql - 具有动态列的 SQL 查询 (PIVOT)

php - 一些 php 脚本(需要逻辑帮助)

python - 从Django中具有外键关系的两个表中检索数据?

c++ - 编写应用程序以在没有托管代码的情况下与 SQL 2008 交互

mysql - 表连接的 SQL 数据库错误

java - H2 不删除临时表的序列

sql - Oracle SQL 填充时间维度

PHP/MySQL 删除用户 - 函数