MySQL table workbench 中的创建错误

MySQL table creation error in workbench

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

  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`));

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

请帮忙

谢谢。

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

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

PS: 也可以在Session标签页查看使用的服务器版本: