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;