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

Python3升级后执行MySQL DELETE查询挂起无响应问题求助

可能的问题排查点
  • 锁等待(最高概率)
    其他未提交的事务持有member_additional_skills表的行锁、表锁或者元数据锁,导致你的DELETE操作一直处于等待状态无返回。验证方式:登录MySQL执行show processlist;,查看对应连接的State字段是否为Waiting for table metadata lock、Waiting for table level lock这类等待锁的状态;也可以执行show engine innodb status;查看InnoDB的事务锁等待明细,找到持有锁的事务处理即可。
  • 未设置执行超时参数
    mysql.connector默认未开启查询超时,会无限等待服务端返回,所以即使底层出现问题也不会主动抛错中断。可以在建立连接时添加connection_timeout=30参数限制连接超时,执行SQL时添加timeout参数限制查询超时,示例:
    # 连接时加超时
    cnx = mysql.connector.connect(
        host=config["MySQL"]["host"],
        user=config["MySQL"]["user"],
        port=config["MySQL"]["port"],
        passwd=config["MySQL"]["password"],
        database=config["MySQL"]["database"],
        connection_timeout=30
    )
    # 执行SQL时加超时,单位秒
    cur.execute("DELETE FROM member_additional_skills", params=None, timeout=10)
    
  • 链路中间件/网络断连
    如果你的数据库连接走了代理(ProxySQL、MaxScale等)、防火墙、安全组,这类中间件会默认切断长时间无数据交互的空闲连接,客户端未收到服务端返回就会一直阻塞。你看到的client_loop: send disconnect: Broken pipe是SSH连接超时断开的提示,和脚本本身的阻塞是独立现象,说明你是在远程SSH终端运行的脚本,SSH先断了。
  • 驱动版本兼容性问题
    旧版本的mysql-connector-python和Python3、MySQL 8.0+存在兼容性bug,可能导致执行SQL时无响应,可以尝试升级驱动版本:pip install --upgrade mysql-connector-python。
  • 表结构损坏
    小概率情况是目标表出现逻辑损坏,可在MySQL命令行执行CHECK TABLE member_additional_skills;检查表状态,如有损坏执行REPAIR TABLE member_additional_skills;修复即可。
快速验证方法

直接登录MySQL服务端命令行,执行同样的DELETE和ALTER语句:

DELETE FROM member_additional_skills;
ALTER TABLE member_additional_skills AUTO_INCREMENT = 1;

如果命令行执行也是卡住,直接定位数据库侧的锁或者表问题;如果命令行秒执行完成,就排查连接链路、代码驱动参数的问题。

内容的提问来源于stack exchange,提问作者ThurstonLevi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:21:03