You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL WorkBench正向工程报Error 1064错误,请求排查解决

Error 1064错误分析与解决办法

错误原因

错误出在CREATE TABLE语句的id字段定义:

`id` INT GENERATED ALWAYS AS () VIRTUAL,

MySQL的**生成列(Generated Column)**要求必须指定有效的计算表达式,空括号()不符合语法规范,这直接触发了Error 1064语法错误。

解决办法

根据业务需求,分两种场景处理:

场景1:id作为自增主键(最常用场景)

如果id是用于唯一标识记录的自增主键,无需使用生成列,改为自增字段即可:

CREATE TABLE IF NOT EXISTS `myBank`.`Clients` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(1000) NULL,
  `place_of_birth` VARCHAR(1000) NULL,
  `date_of_birth` DATE NULL,
  `address` VARCHAR(1000) NULL,
  `passport` VARCHAR(100) NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;

场景2:id确实需要作为生成列

如果id必须基于其他字段计算生成,需在括号内填写合法表达式,示例如下(根据实际需求调整):

-- 示例:基于passport和出生日期拼接生成id
CREATE TABLE IF NOT EXISTS `myBank`.`Clients` (
  `passport` VARCHAR(100) NULL,
  `date_of_birth` DATE NULL,
  `id` INT GENERATED ALWAYS AS (CONCAT(passport, DATE_FORMAT(date_of_birth, '%Y%m%d'))) VIRTUAL,
  `name` VARCHAR(1000) NULL,
  `place_of_birth` VARCHAR(1000) NULL,
  `address` VARCHAR(1000) NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;

操作提示

修改完成后,在MySQL WorkBench中重新执行正向工程,或直接运行修正后的建表语句即可解决该错误。

内容的提问来源于stack exchange,提问作者Ilya Budakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:24:08