首页 > 解决方案 > MySQL Workbench,不断收到错误 1064 错误

问题描述

相当新的SQL。试图创建一个数据库,但一直遇到这个问题?

在服务器中执行 SQL 脚本

错误:错误 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在“可见”附近使用的正确语法,

约束fk_Vurdering_Fag

外键 ( Fag_Fagkode)

第 11 行的 REF'

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 个失败

以最终形式获取回视图定义。没有什么可取的

有人知道可能出了什么问题吗?我已经在这里和其他地方重新讨论了这个话题。没有一个解决方案对我有用:(

任何提示将不胜感激,谢谢:)

标签: mysqlerror-handling

解决方案


PRIMARY KEY 的所有部分都不能为空;如果您需要在键中使用 NULL,请改用 UNIQUE

您已将属性定义Fag_Fagkode为 NULL。将其更改为唯一。检查这是否有效:

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;

推荐阅读