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 - 我的创建表语法有什么问题?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL/MariaDB:创建数据透视表视图

数据未插入mySQL表(MariaDB)

phpmyadmin MariaDb 更改表语法错误

mysql/mariadb知识点总结 之 表管理语句

mysql/mariadb知识点总结 之 表管理语句

mysql/mariadb知识点总结 之 表管理语句