MySQL ER_IB_MSG_586报错怎么修复?远程处理方案有哪些?

文章导读
针对 MySQL ER_IB_MSG_586 报错,核心修复方案是检查更新查询中是否引用了未定义的列。该错误通常发生在执行带有列名称和表达式的更新查询时,表达式引用了基表中不存在的列。修复方法包括确保查询仅引用基表已定义的列,或在表中添加缺失的新列。此外,若涉及字符串函数,需检查引号使用是否正确,必要时使用 CAST 函数确保类型匹配。远程处理方案则涉及检查网络连接、防火墙设置及 MySQL 用户
📋 目录
  1. MySQL ER_IB_MSG_586 报错怎么修复?远程处理方案有哪些?
  2. MySQL Error number: MY-012411; Symbol: ER_IB_MSG_586; SQLSTATE: HY000 报错 故障修复 远程处理
  3. 无法连接远程 mysql 数据库解决方案
  4. 记一次 MySQL 崩溃修复案例,再也不用删库跑路了
  5. 建议收藏备查!MySQL 常见错误代码说明
  6. MySQL 优化配置参数 (my.cnf)
  7. FAQ
A A

MySQL ER_IB_MSG_586 报错怎么修复?远程处理方案有哪些?

针对 MySQL ER_IB_MSG_586 报错,核心修复方案是检查更新查询中是否引用了未定义的列。该错误通常发生在执行带有列名称和表达式的更新查询时,表达式引用了基表中不存在的列。修复方法包括确保查询仅引用基表已定义的列,或在表中添加缺失的新列。此外,若涉及字符串函数,需检查引号使用是否正确,必要时使用 CAST 函数确保类型匹配。远程处理方案则涉及检查网络连接、防火墙设置及 MySQL 用户权限配置,确保远程客户端能正常访问数据库服务器,并通过修改 bind-address 允许远程连接。

MySQL Error number: MY-012411; Symbol: ER_IB_MSG_586; SQLSTATE: HY000 报错 故障修复 远程处理

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;(发布时间是 2025 年 5 月 24 日)

无法连接远程 mysql 数据库解决方案

无法连接远程 mysql 数据库解决方案 如何检查远程 MySQL 数据库的网络连接?MySQL 数据库远程连接失败的原因有哪些?如何配置 MySQL 允许远程连接?请注意,这里使用的是 ubuntu 16.04 LTS 版本系统,如系统不同,可能无法生效。在这里先假设两条数据:数据库服务器 IP 地址为:192.168.2.1 本地 IP 地址为:192.168.1.1 解决方案 1:注册一个 MySQL 用户 在数据库服务器上,使用 root 登陆进入命令行后执行以下语句:代码语言:javascript AI 代码解释 grant all privileges on *.* to user@192.168.1.1 identified by '123456'; //user 为用户名,192.168.1.1 为本地地址,'123456'为设置的密码。//按照自己需要自行配置 flush privileges; flush privileges 命令本质上的作用是将当前 user 和 privilige 表中的用户信息/权限设置从 mysql 库 (MySQL 数据库的内置库) 中提取到内存里。MySQL 用户数据和权限有修改后,希望在"不重启 MySQL 服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改 ROOT 帐号的设置后,怕重启后无法再登录进来,那么直接 flush 之后就可以看权限设置是否生效。而不必冒太大风险。然后在本地连接数据库 代码语言:javascript AI 代码解释 mysql -h 192.168.2.1 -u user -p 123456 解决方案 2:设置防火墙 使用以下语句检查 3306 端口是否已开放 代码语言:javascript AI 代码解释 telnet 192.168.2.1 3306 如 3306 端口已开放,请参考另外两个方法 使用一下语句添加 3306 端口号 代码语言:javascript AI 代码解释 sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT -A INPUT :表明我们要将此规则追加到某个链的最后,由于我们要操作 INPUT 链接,所以这么写。-j ACCEPT :这个参数用于指定匹配的数据包的目标。用在这里表示接受和允许符合上述标准的数据包通过。实在不行就恢复默认策略 代码语言:javascript AI 代码解释 sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -F 或者直接卸载。。。代码语言:javascript AI 代码解释 sudo apt remove iptables 解决方案 3:修改 bind-address 进入到/etc/mysql/mysql.conf.d 目录中 代码语言:javascript AI 代码解释 cd /etc/mysql/mysql.conf.d 修改其中的 mysqld.cnf 文件,将其中的 bind-address = 127.0.0.1 注释起来 重启 mysql 代码语言:javascript AI 代码解释 sudo service mysql restart 本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。(截至 2026 年 4 月 13 日)

记一次 MySQL 崩溃修复案例,再也不用删库跑路了

记一次 MySQL 崩溃修复案例,再也不用删库跑路了 MySQL 崩溃的原因有哪些?如何预防 MySQL 崩溃?MySQL 崩溃后如何快速定位问题?一、问题描述 研究 MySQL 源代码,调试并压测 MySQL 源代码时,MySQL 崩溃了!问题是它竟然崩溃了!而且还损坏了 InnoDB 文件!!还好是在调试环境下发生的,赶紧看看如何解决这个问题,经过一系列的查阅资料、验证、对比、MySQL 源码调试跟踪、修复损坏的 InnoDB 文件、总结等流程,整理成此文,如果以后真的发生在线上的生产坏境,也不用担心是不是要跑路的问题了,可以分分钟搞定 MySQL 的崩溃问题了!! 查看错误日志,如下:代码语言:javascript AI 代码解释 ----------------------------------------- 161108 23:36:45 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var 2019-12-01 23:36:46 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-12-01 23:36:46 5497 [Note] Plugin 'FEDERATED' is disabled. 2019-12-01 23:36:46 7f11c48e1720 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator. 2019-12-01 23:36:46 5497 [Note] InnoDB: Using atomics to ref count buffer pool pages 2019-12-01 23:36:46 5497 [Note] InnoDB: The InnoDB memory heap is disabled 2019-12-01 23:36:46 5497 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2019-12-01 23:36:46 5497 [Note] InnoDB: Memory barrier is not used 2019-12-01 23:36:46 5497 [Note] InnoDB: Compressed tables use zlib 1.2.3 2019-12-01 23:36:46 5497 [Note] InnoDB: Using CPU crc32 instructions 2019-12-01 23:36:46 5497 [Note] InnoDB: Initializing buffer pool, size = 16.0M 2019-12-01 23:36:46 5497 [Note] InnoDB: Completed initialization of buffer pool InnoDB: Database page corruption on disk or a failed InnoDB: file read of page 5.(来自 2026 年 4 月 14 日的资料)

MySQL ER_IB_MSG_586报错怎么修复?远程处理方案有哪些?

建议收藏备查!MySQL 常见错误代码说明

建议收藏备查!MySQL 常见错误代码说明 先给大家看几个实例的错误分析与解决方案。1.ERROR 2002 (HY000): Can't connect to localMySQLserver through socket '/data/mysql/mysql.sock' 问题分析:可能是数据库没有启动或者是端口被防火墙禁止。解决方法:启动数据库或者防火墙开放数据库监听端口。2.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 问题分析:密码不正确或者没有权限访问。解决方法:1) 修改 my.cnf 主配置文件,在 [mysqld] 下添加 skip-grant-tables,重启数据库。最后修改密码命令如下:代码语言:javascript AI 代码解释 mysql>use mysql;mysql>update usersetpassword=password("123456")where user="root"; 再删除刚刚添加的 skip-grant-tables 参数,再重启数据库,使用新密码即可登录。2) 重新授权,命令如下:代码语言:javascript AI 代码解释 mysql>grant all on*.*to'root'@'mysql-server'identified by'123456'; 3.客户端报 Too many connections 问题分析:连接数超出 Mysql 的最大连接限制。解决方法:1、在 my.cnf 配置文件里面增加连接数,然后重启 MySQL 服务。max_connections = 10000 2、临时修改最大连接数,重启后不生效。需要在 my.cnf 里面修改配置文件,下次重启生效。代码语言:javascript AI 代码解释 setGLOBALmax_connections=10000; 4.Warning: World-writable config file '/etc/my.cnf' is ignored ERROR! MySQL is running but PID file could not be found 问题分析:MySQL 的配置文件/etc/my.cnf 权限不对。解决方法:代码语言:javascript AI 代码解释 chmod644/et/my.cnf 5.InnoDB: Error: page 14178 log sequence number 29455369832 InnoDB: is in the future! Current system log sequence number 29455369832 问题分析:innodb 数据文件损坏。解决方法:修改 my.cnf 配置文件,在 [mysqld] 下添加 innodb_force_recovery=4, 启动数据库后备份数据文件,然后去掉该参数,利用备份文件恢复数据。(搜索结果收录于 2024 年 6 月 13 日)

MySQL 优化配置参数 (my.cnf)

MySQL 优化配置参数 (my.cnf) mysql 的 my.cnf 文件中哪些参数是与内存相关的?在 my.cnf 文件中如何设置以提高 mysql 的查询速度?max_connections: 允许客户端并发连接的最大数量,默认值是 151,一般将该参数设置为 500-2000 max_connect_errors: 如果客户端尝试连接的错误数量超过这个参数设置的值,则 服务器 不再接受新的客户端连接。可以通过清空主机的缓存来解除服务器的这种阻止新连接的状态,通过 flush hosts 或 mysql adminflush-hosts 命令来清空缓存。这个参数的默认值是 100,一般将该参数设置为 100000. interactive_timeout: mysql 关闭交互连接前的等待时间,单位是秒,默认是 8 小时,建议不要将该参数设置超过 24 小时,即 86400 wait_timeout: mysql 关闭非交互连接前的等待时间,单位是秒,默认是 8 小时,建议不要将该参数设置超过 24 小时,即 86400 skip_name_resolve: 如果这个参数设为 off,则 mysql 服务在检查客户端连接的时候会解析主机名;如果这个参数设为 on,则 mysql 服务只会使用 ip,在这种情况下,授权表中的 host 字段必须是 ip 地址或 localhost.这个参数默认是关闭的 back_log: mysql 服务器连接请求队列所能处理的最大连接请求数,如果队列放满了,后续的连接才会拒绝。当主要的 mysql 线程在很短时间内获取大量连接请求时,这个参数会生效。接下来,mysql 主线程会花费很短的时间去检查连接,然后开启新的线程。这个参数指定了 mysql 的 tcp /ip 监听队列的大小。如果 mysql 服务器在短时间内有大量的连接,可以增加这个参数。文件相关参数 sync_binlog: 控制二进制日志被同步到磁盘前二进制日志提交组的数量。当这个参数为 0 的时候,二进制日志不会被同步到磁盘;当这个参数设为 0 以上的数值时,就会有设置该数值的二进制提交组定期同步日志到磁盘。当这个参数设为 1 的时候,所有事务在提交前会被同步到二进制日志中,因而即使 mysql 服务器发生意外重启,任何二进制日志中没有的事务只会处于准备状态,这会导致 mysql 服务器自动恢复以回滚这些事务.(2026 年 4 月 14 日的资料)

FAQ

Q: ER_IB_MSG_586 错误通常由什么原因引起?

MySQL ER_IB_MSG_586报错怎么修复?远程处理方案有哪些?

A: 该错误通常由于在更新查询中,表达式引用了未显式提供基表中未定义的列而引起。

Q: 如何远程连接 MySQL 数据库?

MySQL ER_IB_MSG_586报错怎么修复?远程处理方案有哪些?

A: 需要注册 MySQL 用户并授权远程 IP,设置防火墙开放 3306 端口,并修改 bind-address 配置。

Q: MySQL 崩溃后如何修复 InnoDB 文件?

A: 可以通过查看错误日志定位问题,必要时使用 innodb_force_recovery 参数启动数据库后备份恢复。