mysql - 引用时无法在mysql中创建表
问题描述
CREATE TABLE `DB`.`ORDER` (
`oid` INT NOT NULL UNIQUE AUTO_INCREMENT,
`createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`oValue` FLOAT NOT NULL,
`no` INT NOT NULL,
`qty` INT NOT NULL,
`status` VARCHAR(20) NOT NULL,
`refundStatus` VARCHAR(10),
`refundId` INT,
`paymentStatus` VARCHAR(10),
`paymentId` INT,
`aid` INT,
PRIMARY KEY(`oid`),
FOREIGN KEY `aid` REFERENCES ADDR(`aid`)
)
ENGINE = InnoDB;
带有键的 ADDR 表aid
确实存在于数据库中,但运行此命令时出现错误。
错误:
CREATE TABLE `DB`.`ORDER` (
`oid` INT NOT NULL UNIQUE AUTO_INCREMENT,
`createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`oValue` FLOAT NOT NULL,
`no` INT NOT NULL,
`qty` INT NOT NULL,
`status` VARCHAR(20) NOT NULL,
`refundStatus` VARCHAR(10),
`refundId` INT,
`paymentStatus` VARCHAR(10),
`paymentId` INT,
`aid` INT,
PRIMARY KEY(`oid`),
FOREIGN KEY `aid` REFERENCES ADDR(`aid`)
)
ENGINE = InnoDB
MySQL said: Documentation
#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 'REFERENCES ADDR(`aid`)
)
ENGINE = InnoDB' at line 14
我无法弄清楚为什么在这种情况下会发生而不是在其他情况下发生。
解决方案
代替:
FOREIGN KEY `aid` REFERENCES ADDR(`aid`)
和:
FOREIGN KEY (`aid`) REFERENCES ADDR(`aid`)
或使用官方标准 SQL语法:
constraint fk1 FOREIGN KEY (`aid`) REFERENCES ADDR (`aid`)
推荐阅读
- css - 具有绝对位置的居中子级与具有显示 flex 的父级
- opencv - 3d 点投影 2d 点错误
- spring - 骆驼 cxf 肥皂和 karaf 问题
- jenkins - 使用外部数据库管理 Jenkins 用户角色
- angular - IONIC 3:API POST 错误
- c# - C# EntityCode First:创建了不需要的外键
- web - 如何通过指纹登录网站?
- getstream-io - getstream.io - 提要检索以 HTML 而不是 JSON 响应
- python - python中的按钮功能不起作用self.clicked
- sql-server - SQL 始终加密与 SQL 动态数据屏蔽