MySQL Error number: MY-012411; Symbol: ER_IB_MSG_586; SQLSTATE: HY000

文档解释

Error number: MY-012411; Symbol: ER_IB_MSG_586; SQLSTATE: HY000

Message: %s

错误说明

ER_IB_MSG_586 是MySQL Server上的一个错误代码,用于表明“更新的信息可用于更新的外部表标记注册,但没有带更新的列)”。这通常由于在更新查询(带有列名称和表达式)中,表达式引用了未显式提供基表中未定义的列而引起。

常见案例

这个错误一般是发生在MySQL Server上执行更新查询(带有列名称和表达式)时引起的。当表达式引用的基表中找不到未定义的列时,就会发生这种情况。例如,下面的查询可能会引发错误代码ER_IB_MSG_586:

UPDATE foo

SET bar = baz + invalid_column

WHERE id = 100;

解决方法

此错误一般是由表达式引用了未显式提供基表中未定义的列而引起的。因此,需要确保在更新查询中仅引用基表定义的列,而不是未定义的列。此外,也可以通过在查询中添加新列来解决此问题,例如:

UPDATE foo

SET bar = baz + new_column

WHERE id = 100;

另外,如果表达式包含字符串函数,则可能需要使用单引号而不是双引号,例如:

UPDATE foo

SET bar = CONCAT(‘hello’, ‘world’)

WHERE id = 100;

同样,还可以尝试使用CAST函数确保指定的列类型与更新查询中指定的列类型匹配,例如:

UPDATE foo

SET bar = CAST(baz AS INTEGER) + new_column

WHERE id = 100;

你可能感兴趣的