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

Windows容器下mysqlsh连接MySQL报1041内存不足但mysql命令行可正常连接

问题根因定位与解决方案

  • 首先排除真内存不足问题:你提到宿主机和容器都有3GB可用内存,该报错为Windows容器下MySQL的协议适配、内存分配逻辑缺陷导致的误报。

排查&修复步骤

  1. 验证连接协议问题
    mysqlsh默认优先使用X协议连接MySQL,而原生mysql命令行默认使用经典TCP协议,8.0.26版本Windows版MySQL的X协议插件存在内存预分配bug,会触发1041错误。
    可先执行以下命令强制mysqlsh使用经典协议连接,验证是否能正常连通:
mysqlsh -uroot -poracle -hMYSQL80-01 -Dsys --js --interactive --mysql

如果可以连通说明是X协议的问题,可选择两种方案修复:

  • 临时不需要X协议的话,在MySQL配置文件my.ini中添加配置禁用X插件:
    loose-mysqlx = OFF
    
  • 需要保留X协议的话,调低X协议预分配资源阈值,添加配置:
    mysqlx_max_connections = 10
    mysqlx_read_buffer_size = 64K
    
  1. 调整Windows容器运行参数
    Windows Server 2022容器默认的连续虚拟内存分配上限低于实际可用物理内存,即使宿主机有剩余内存,也会出现大块内存分配失败的情况。启动容器时添加以下参数调整内存限制:
docker run -d --memory 4G --memory-swap 8G --isolation process 你的MySQL镜像名

--isolation process 使用进程隔离替代默认的Hyper-V隔离,可大幅降低内存碎片化概率。

  1. 版本升级修复已知bug
    MySQL 8.0.26 Windows版本存在已知的X协议连接内存计算缺陷,当请求来自同节点容器网络时会错误计算所需内存大小,导致分配失败误报1041,该问题在8.0.28及之后的版本已经修复,可直接升级对应版本的Windows容器镜像解决。

内容的提问来源于stack exchange,提问作者mark d drake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:27:03