MySQL Error number: 3765; Symbol: ER_GENERATED_COLUMN_VARIABLES; SQLSTATE: HY000

文档解释

Error number: 3765; Symbol: ER_GENERATED_COLUMN_VARIABLES; SQLSTATE: HY000

Message: Expression of generated column ‘%s’ cannot refer user or system variables.

ER_GENERATED_COLUMN_VARIABLES错误号码 3765,是 MySQL 数据库系统专有的 SQLSTATE 状态代码, 用于表明变量名称在生成列中不允许使用。

错误说明:

ER_GENERATED_COLUMN_VARIABLES错误代码表明,在MySQL中只有临时表及子查询中可以使用变量名称,而生成列中不允许使用变量名称,一旦试图将其用于生成列中,将会引发该错误。

常见案例

假设用户试图为一个表创建一个生成列:

CREATE TABLE tbl_name(

name VARCHAR(50) PRIMARY KEY

@var1 VARCHAR(50))

GENERATED ALWAYS AS (CONCAT(“G-“, @var1))

);

上述操作将会引发ER_GENERATED_COLUMN_VARIABLES错误。

解决方法:

要解决ER_GENERATED_COLUMN_VARIABLES,用户可以从更改他们的查询语法,到更改 ER_GENERATED_COLUMN_VARIABLES 错误代码,根据用户具体情况而定。

如果用户试图在生成列中使用变量名称,他们可以采取以下措施来解决ER_GENERATED_COLUMN_VARIABLES错误:

1. 改变生成列的处理语句,从而舍弃用变量,改用直接的值

2. 将变量符号替换成值内容。在临时表,子查询中使用变量,然后重新构建生成列的表达式

3. 如果语义上存在条件逻辑,考虑将MySQL生成列与复杂的MySQL函数结合起来进行使用

总而言之,如果用户希望解决ER_GENERATED_COLUMN_VARIABLES错误,他们可能进行一些简单调整,以将变量放置在允许变量使用的地方,例如临时表,子查询中。

你可能感兴趣的