mysql - 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 个失败
以最终形式获取回视图定义。没有什么可取的
有人知道可能出了什么问题吗?我已经在这里和其他地方重新讨论了这个话题。没有一个解决方案对我有用:(
任何提示将不胜感激,谢谢:)
解决方案
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;
推荐阅读
- mysql - 保持多个表的评级
- android - android.app.ActivityThread.performLaunchActivity 的 Android RuntimeException
- google-apps-script - 谷歌脚本功能 - 复制粘贴
- flutter - 如何从类生成地图
- excel - 在没有 Office 的服务器上对 Excel 文件执行 PowerShell 操作(打开和使用密码另存为)
- vb.net - 从 windows 开始,无需管理权限
- ios - 使用 credentialsProvider 与 AWSMobileClient 检索 Cognito 身份 ID
- angularjs - 如何从不同的控制器调用另一个控制器的功能
- javascript - Console.log() 它没有显示函数的结果
- javascript - 开玩笑时出错:`jest.mock()` 的模块工厂不允许引用任何超出范围的变量