频繁连接时与MySQL服务器的连接丢失,错误信息为“读取初始通信包”

0 投票
2 回答
898 浏览
提问于 2025-04-21 08:46
# -*- coding: utf-8 -*-
import MySQLdb
import sitedb

for i in range(5):
    print i
    cred = sitedb.loadmysqlcredential()
    db = MySQLdb.connect(host = cred["host"], user = cred["user"], passwd = cred["passwd"], db = "vg_site_db", charset = 'utf8')
    db.close()

我在不同的服务器上使用MySQL:一个是Windows,一个是Linux。在Windows上,这段代码运行得很好。但在Linux上,当循环到第三次时,MySQL却说:在读取初始通信包时与MySQL服务器失去连接,系统错误:0。

我需要在Linux服务器上做什么更改呢?

更新:

问题是我有一个循环(for),当i等于0时连接正常,i等于1和2时也没问题,但接下来连接就被阻塞了。

2 个回答

0

下面是我在连接一个Linux数据库时使用的连接字符串示例,希望对你有帮助:

 dbSomeDBConnection = MySQLdb.connect(host="10.100.10.2",
                      user="root",
                      passwd="",
                      db="unitTestDB",
                      charset="utf8"
                      )

更新:

我在我的Linux环境(CentOS 6和MySQL 5.1.73)上测试了你的代码,没能复现你遇到的问题。你可以尝试像我下面那样简化你的凭证部分,看看问题是否依然存在。以下是我用来测试你代码的内容,对我来说运行得很好:

# -*- coding: utf-8 -*-

import MySQLdb

for i in range(5):
    print i
    db = MySQLdb.connect(host = "10.100.10.2", user = "root", passwd = "", db = "unitTestDB", charset = "utf8")
    db.close()
0

我在网上查了一下,发现有时候会出现这种情况,重启一下就能解决问题。我重启了我的系统,结果脚本就正常运行了。

撰写回答