工作台中MySQL表创建错误

标签 mysql mysql-workbench ddl create-table

我是 MySQL 新手,我正在运行版本 5.7.19-log(至少这是我从命令行客户端获得的)和 Workbench 6.3.9 社区版。我的问题是我正在尝试使用 UI 创建一个带有自动生成 id 的简单表,但是当我执行生成的脚本时,它会抛出以下错误:

  Operation failed: There was an error while applying the SQL script to the database.
Executing:
CREATE TABLE `travelportaldb`.`user` (
  `user_id` INT GENERATED ALWAYS AS () VIRTUAL,
  `name` VARCHAR(45) NOT NULL,
  `account_id` VARCHAR(15) NULL,
  `account_currency` CHAR(3) NULL,
  `account_balance` DECIMAL NULL,
  PRIMARY KEY (`user_id`));

ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') VIRTUAL,
  `name` VARCHAR(45) NOT NULL,
  `account_id` VARCHAR(15) NULL,
  `ac' at line 2
SQL Statement:
CREATE TABLE `travelportaldb`.`user` (
  `user_id` INT GENERATED ALWAYS AS () VIRTUAL,
  `name` VARCHAR(45) NOT NULL,
  `account_id` VARCHAR(15) NULL,
  `account_currency` CHAR(3) NULL,
  `account_balance` DECIMAL NULL,
  PRIMARY KEY (`user_id`))

这是它生成的脚本:

CREATE TABLE `travelportaldb`.`user` (
  `user_id` INT GENERATED ALWAYS AS () VIRTUAL,
  `name` VARCHAR(45) NOT NULL,
  `account_id` VARCHAR(15) NULL,
  `account_currency` CHAR(3) NULL,
  `account_balance` DECIMAL NULL,
  PRIMARY KEY (`user_id`));

我不知道出了什么问题。我来自甲骨文背景,查询似乎很好,除了自动生成的部分,我不知道。

请帮忙。

谢谢。

最佳答案

当您在 MySQL Workbench 中打开 generate 标志时,列详细信息字段将发生一些变化,以允许为生成的列设置所需的选项:

enter image description here

这里最重要的是Expression字段。对于生成的列,您必须指定用于生成的表达式。显然您没有这样做,因此在生成的 SQL 中,列定义是错误的(空括号,其中应该是表达式)。

PS:您还可以在Session标签页中查看所使用的服务器版本:

enter image description here

关于工作台中MySQL表创建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006016/

相关文章:

php - 将id插入MYSQL表以进行多图片上传

java - 从 Java 向 MySQL 插入/更新 blob

MySQL查询找出匹配的记录

mysql - MySQL 上所有复杂查询的错误(2014。命令超出查询)

sql - 用条件检查约束

sql - 有什么方法可以更改 HANA DB 中的序列名称吗?

mysql - 更改现有表中的列定义

php - mysql问题与添加列

mysql - 更改架构不起作用

java - spring mvc Hibernate 搜索查询