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
标签页查看使用的服务器版本:
我是 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
标签页查看使用的服务器版本: