引用时无法在mysql中创建表
数据库中确实存在带有键引用时无法在mysql中创建表,mysql,sql,create-table,Mysql,Sql,Create Table,数据库中确实存在带有键aid的ADDR表,但运行此命令时出错 错误: CREATE TABLE `DB`.`ORDER` ( `oid` INT NOT NULL UNIQUE AUTO_INCREMENT, `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `oValue` FLOAT NOT NULL, `no`
aid
的ADDR表,但运行此命令时出错
错误:
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;
我无法理解为什么在这种情况下会发生这种情况,而在其他情况下不会发生这种情况。替换:
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
与:
或使用官方标准SQL语法:
需要外键列周围的括号
外键(aid)引用
我在其他查询中没有注意到括号。非常感谢
FOREIGN KEY `aid` REFERENCES ADDR(`aid`)
FOREIGN KEY (`aid`) REFERENCES ADDR(`aid`)
constraint fk1 FOREIGN KEY (`aid`) REFERENCES ADDR (`aid`)