Py学习  »  DATABASE

mysql workbench生成的sql代码中出现错误1064

Eric Mandel • 6 年前 • 1528 次点击  

在mysql工作台中创建第一个表有一个小问题。当我创建两个表并查看前进的工程进度时,会收到如下消息:

在服务器中执行SQL脚本 错误:错误1064:您的SQL语法有错误; 检查与您的mariadb服务器版本相对应的手册 使用正确的语法 指数 fk_person_has_user_person_idx ( person_ID asc)可见, 第8行的“约束”

SQL代码:

        -- -----------------------------------------------------
        -- Table `customers`.`person_has_user`
        -- -----------------------------------------------------
        CREATE TABLE IF NOT EXISTS `customers`.`person_has_user` (
          `person_ID` INT NOT NULL,
          `user_person_ID` INT NOT NULL,
          PRIMARY KEY (`person_ID`, `user_person_ID`),
          INDEX `fk_person_has_user_user1_idx` (`user_person_ID` ASC) VISIBLE,
          INDEX `fk_person_has_user_person_idx` (`person_ID` ASC) VISIBLE,
          CONSTRAINT `fk_person_has_user_person`
            FOREIGN KEY (`person_ID`)
            REFERENCES `customers`.`person` (`ID`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION,
          CONSTRAINT `fk_person_has_user_user1`
            FOREIGN KEY (`user_person_ID`)
            REFERENCES `customers`.`user` (`person_ID`)
            ON DELETE NO ACTION
            ON UPDATE NO ACTION)
        ENGINE = InnoDB

SQL script execution finished: statements: 7 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

有人能解释一下吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43720
文章 [ 1 ]  |  最新文章 6 年前
O. Jones
Reply   •   1 楼
O. Jones    6 年前

埃德·科特雷尔是对的。这是mysql服务器版本和mysql工作台设置之间的版本不匹配。

  1. SELECT VERSION(); 让你的服务器告诉你它的版本。
  2. 在workbench中,编辑/preferences/modeling>mysql,并设置 默认目标MySQL版本 到您的服务器版本。

然后workbench将生成适合您实际使用的服务器的代码。

对于新用户来说,这个错误很可能发生;新下载的Workbench软件的默认设置是MySQL8,但是世界上很多服务器还没有在版本8上。