mysql workbench,不断获取错误1064 error

0yg35tkg  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(601)

这个问题在这里已经有答案了

mysql工作台:查询错误(1064):第1行“可见”附近的语法错误(3个答案)
两年前关门了。
对sql相当陌生。试图创建一个数据库,但一直遇到这个问题?
在服务器中执行sql脚本
错误:错误1064:您的sql语法有错误;查看与您的mysql服务器版本相对应的手册,了解使用“visible,
约束 fk_Vurdering_Fag 外键( Fag_Fagkode )
参考第11行
sql代码:

-- -----------------------------------------------------
    -- Table `Vurderingsbase`.`Vurdering`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `Vurderingsbase`.`Vurdering` (
      `Vurderingsnr` INT NOT NULL AUTO_INCREMENT,
      `Dato` DATETIME NOT NULL,
      `Karakter` INT NULL,
      `Type` VARCHAR(255) NULL,
      `Fag_Fagkode` VARCHAR(255) NULL,
      PRIMARY KEY (`Vurderingsnr`, `Fag_Fagkode`),
      INDEX `fk_Vurdering_Fag_idx` (`Fag_Fagkode` ASC) VISIBLE,
      CONSTRAINT `fk_Vurdering_Fag`
        FOREIGN KEY (`Fag_Fagkode`)
        REFERENCES `Vurderingsbase`.`Fag` (`Fagkode`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB

sql脚本执行完成:语句:6个成功,1个失败
获取最终形式的后视图定义。没有东西要拿
有人知道什么地方会出错吗?我已经研究了这里和其他地方的主题。没有一个解决方案对我有效:(
任何提示都将不胜感激,谢谢:)

w9apscun

w9apscun1#

主键的所有部分都不能为空;如果在键中需要null,请改用unique
你已经定义了属性 Fag_Fagkode 为空。把它改成了独一无二的。检查是否有效:

CREATE TABLE IF NOT EXISTS `Vurderingsbase`.`Vurdering` (
      `Vurderingsnr` INT NOT NULL AUTO_INCREMENT,
      `Dato` DATETIME NOT NULL,
      `Karakter` INT NULL,
      `Type` VARCHAR(255) NULL,
      `Fag_Fagkode` VARCHAR(255) UNIQUE,
      PRIMARY KEY (`Vurderingsnr`, `Fag_Fagkode`),
      INDEX `fk_Vurdering_Fag_idx` (`Fag_Fagkode` ASC) ,
      CONSTRAINT `fk_Vurdering_Fag`
        FOREIGN KEY (`Fag_Fagkode`)
        REFERENCES `Vurderingsbase`.`Fag` (`Fagkode`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;

检查引用表列 Fagkode 与以下数据类型相同:

CREATE TABLE IF NOT EXISTS `Vurderingsbase`.`Fag` (
      `Fagkode` VARCHAR(255) UNIQUE PRIMARY KEY,
      `Fag` VARCHAR(255) NULL NULL,
      `Uketimer` INT NULL 
 )
    ENGINE = InnoDB;

相关问题