【问题标题】:Linux can`t create table in mysql workbenchLinux 无法在 mysql 工作台中创建表
【发布时间】:2021-02-06 11:26:50
【问题描述】:

我已经在 linux 上安装了我的 sql workbecnh:

MySqlWorkbench version

使用导出 -> 正向工程师获取此测试脚本:

-- MySQL Script generated by MySQL Workbench
-- Sat 06 Feb 2021 01:14:50 PM EET
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`test`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`test` (
  `idtest` INT NOT NULL,
  `testcoltes` VARCHAR(45) NULL,
  PRIMARY KEY (`idtest`),
  UNIQUE INDEX `idtest_UNIQUE` (`idtest` ASC) VISIBLE)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

得到了这个错误:

CREATE TABLE IF NOT EXISTS `mydb`.`test` (   `idtest` INT NOT NULL,   `testcoltes` VARCHAR(45) NULL,   PRIMARY KEY (`idtest`),   UNIQUE INDEX `idtest_UNIQUE` (`idtest` ASC) VISIBLE) ENGINE = InnoDB   Error Code: 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 ') ENGINE = InnoDB' at line 5 0,00027 sec

它已创建数据库,但无法创建任何表。我什至没有参与创建这个脚本(它只是从模型中导出的)所以为什么会出现这个错误?

【问题讨论】:

    标签: linux mysql-workbench create-table


    【解决方案1】:

    您缺少右括号:

    UNIQUE INDEX `idtest_UNIQUE` (`idtest` ASC) VISIBLE) ENGINE = InnoDB;
    

    应该是:

    UNIQUE INDEX (`idtest_UNIQUE` (`idtest` ASC) VISIBLE) ENGINE = InnoDB;
    

    【讨论】:

    • 感谢您的回复!它没有帮助。输出:```如果不存在则创建表mydb.testidtestINT NOT NULL,testcoltesVARCHAR(45)NULL,主键(idtest),唯一索引(idtest_UNIQUE(@ 987654329@ ASC) VISIBLE) ENGINE = InnoDB 错误代码:1064。您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,以获取正确的语法,以便在 'idtest ASC) VISIBLE) ENGINE =第 5 行的 InnoDB ```
    • 我将 UNIQUE INDEX idtest_UNIQUE (idtest ASC) VISIBLE) 更改为 UNIQUE INDEX (idtest_UNIQUE (idtest ASC) VISIBLE) ENGINE = InnoDB;它还说'('对于这个服务器版本在这个位置是无效的输入
    猜你喜欢
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2019-03-06
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多