MariaDB, MySQL - 我的创建表语法有什么问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MariaDB, MySQL - 我的创建表语法有什么问题?相关的知识,希望对你有一定的参考价值。
我试图执行这样的SQL命令来为Maria DB创建表。
CREATE TABLE `sh_bom`.`stockmovements` (
`MOVEMENTID` INT NOT NULL,
`MOVEMENTDATE` DATETIME NULL,
`MOVEMENTVALUE` INT NULL,
`LEFTBEFORE` INT NULL,
`LEFTAFTER` INT NULL,
`COMMENTARY` VARCHAR(200) NULL,
`PARTID_FK` INT NULL,
PRIMARY KEY (`MOVEMENTID`),
INDEX `PARTID_FKNAME_idx` (`PARTID_FK` ASC) VISIBLE,
CONSTRAINT `PARTID_FKNAME`
FOREIGN KEY (`PARTID_FK`)
REFERENCES `sh_bom`.`detail` (`Id`)
ON DELETE CASCADE
ON UPDATE CASCADE);
但我得到这样的错误。
ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '
CONSTRAINT `PARTID_FKNAME`
FOREIGN KEY (`PARTID_FK`)
REFERENCES `sh_b' at line 10
SQL Statement:
CREATE TABLE `sh_bom`.`stockmovements` (
`MOVEMENTID` INT NOT NULL,
`MOVEMENTDATE` DATETIME NULL,
`MOVEMENTVALUE` INT NULL,
`LEFTBEFORE` INT NULL,
`LEFTAFTER` INT NULL,
`COMMENTARY` VARCHAR(200) NULL,
`PARTID_FK` INT NULL,
PRIMARY KEY (`MOVEMENTID`),
INDEX `PARTID_FKNAME_idx` (`PARTID_FK` ASC) VISIBLE,
CONSTRAINT `PARTID_FKNAME`
FOREIGN KEY (`PARTID_FK`)
REFERENCES `sh_bom`.`detail` (`Id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
我检查了这里的文档。https:/mariadb.comkbenforeign-keys。而且我确定外键的定义是正确的。
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
我在这个SQL命令中缺少什么?
答案
该 有形 在你的创建表语句中,潜在的错误是你的索引定义使用了关键字 VISIBLE
. mysql中的索引默认情况下对优化器是可见的。 从MySQL 8+开始,索引可以被设置为不可见。 如果你使用的是早于8+的MySQL版本,你的语法可能会导致错误。
以上是关于MariaDB, MySQL - 我的创建表语法有什么问题?的主要内容,如果未能解决你的问题,请参考以下文章