Python MySQL错误:2013;与位于';的MySQL服务器的连接中断;正在读取初始通信包';,系统错误:0“;

Python MySQL错误:2013;与位于';的MySQL服务器的连接中断;正在读取初始通信包';,系统错误:0“;,python,mysql,Python,Mysql,我在使用Python的MySQLdb库连接本地MySQL数据库时遇到问题。这个脚本以前运行得很好,但是我偶尔会在标题中看到MySQL错误。对于何时发生错误似乎没有任何解释,脚本总是从具有相同参数的同一台机器上运行 MySQL服务器在Windows XP SP3上作为服务运行,使用端口3306(本地托管的phpMyAdmin works),脚本从Oracle VM VirtualBox中的Ubuntu 10.04来宾操作系统运行 我目前正在通过打开一个命令提示符并执行“netstopMySQL”然

我在使用Python的MySQLdb库连接本地MySQL数据库时遇到问题。这个脚本以前运行得很好,但是我偶尔会在标题中看到MySQL错误。对于何时发生错误似乎没有任何解释,脚本总是从具有相同参数的同一台机器上运行

MySQL服务器在Windows XP SP3上作为服务运行,使用端口3306(本地托管的phpMyAdmin works),脚本从Oracle VM VirtualBox中的Ubuntu 10.04来宾操作系统运行

我目前正在通过打开一个命令提示符并执行“netstopMySQL”然后执行“netstart MySQL”来解决这个问题。这允许我在导致错误之前再次运行脚本几次,我一直通过重新启动MySQL服务来修复这个错误

由于我仍在对脚本进行更改,因此有时脚本会引发异常,无法正常退出,尽管我确实捕获了异常并关闭了光标和连接

要连接到数据库的代码:

def __init__(self):
  try:
    print "Connecting to the MySQL database..."
    self.conn = MySQLdb.connect( host = "192.168.56.1",
                                 user = "guestos",
                                 passwd = "guestpw",
                                 db = "testdb")
    self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
    print "MySQL Connection OK"
  except MySQLdb.Error, e:
    print "MySQLdb error %d: %s" % (e.args[0],e.args[1])
    raise
发生这种情况时生成的完整错误如下所示:

MySQLdb error 2013: Lost connection to MySQL server at 'reading initial communication packet', system error: 0
Traceback (most recent call last):
  File "search.py", line 45, in <module>
    dataHandler = DataHandler()
  File "/home/guestos_user/workspace/Search/src/data_handler.py", line 25, in __init__
    db = "testdb")
  File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")
MySQLdb错误2013:在“读取初始通信数据包”时与MySQL服务器的连接丢失,系统错误:0
回溯(最近一次呼叫最后一次):
文件“search.py”,第45行,在
dataHandler=dataHandler()
文件“/home/guestos\u user/workspace/Search/src/data\u handler.py”,第25行,在初始化中__
db=“testdb”)
文件“/usr/lib/pymodules/python2.6/MySQLdb/_init__.py”,第81行,在Connect中
返回连接(*args,**kwargs)
文件“/usr/lib/pymodules/python2.6/MySQLdb/connections.py”,第170行,在__
超级(连接,自).\uuuu初始化(*args,**kwargs2)
_mysql_exceptions.OperationalError:(2013,“在“读取初始通信数据包”时与mysql服务器失去连接,系统错误:0”)

您可能对此感兴趣。不知道这是否对您有帮助,但有些人通过使用服务器名称而不是连接属性中的ip地址来解决这个问题

当子进程尝试共享相同的mysql连接id(解决方案=为每个子进程创建新连接)时,我看到了这种情况。我不确定在与多个线程共享连接对象时是否也可以这样做

然而,这只是众多可能原因之一。有关疑难解答资源的列表,请参阅中的VVS答案

sudo vi /etc/mysql/my.cnf
删除

bind-address = 127.0.0.1
然后


就这样。请注意,在您公开mysql服务器时,这会降低它的安全性。

我运行windows服务器,并且会不时加载
php win.exe
并将其保留在windows任务管理器的进程列表中

如果您知道主机文件是正确的,那么请关闭
php win.exe
进程并重新启动iis
iisreset


如果您正在运行windows,那么您的问题应该得到解决。

您可以更改bind address=localhost并重新启动MySQL服务器吗?似乎这个问题与您的有关:

还有这个-

如果MySQL端口错误,则结果是MySQL客户端错误2013“丢失” 连接。请注意,如果端口转发,也会发生此错误 在SSH配置(配置参数)中禁用 “sshd_config”文件中的“AllowtcForwarding”设置为“否”)。信息技术 (这里)简单地告诉我们,没有从SSH到MySQL的连接 有些原因。但是mySQL客户端API“认为”有一个 连接,这就是为什么说“失去连接…”而不是 “无法连接…”。有一个成功的连接-但没有连接到 MySQL服务器-仅适用于SSH守护程序!但是MySQL客户端API是 不是为了“看到”差异而设计的


请参阅。

您的MySQL服务器中是否有一个名为
guestos@YOURIPADDRESS
? 您必须有一个帐户才能从
yourpaddress
访问MySQL服务器

例如: 您的IP地址是
192.168.56.2
;然后,您必须创建帐户(如果不存在)才能访问

mysql> create user guestos@192.168.56.2 identified by 'guestpw';

我遇到了完全相同的mysql错误(错误2013(HY000):在“读取初始通信数据包”时与mysql服务器失去连接,系统错误:0=),并通过向/etc/hosts.deny添加一个新行来解决此问题。

可能性:您的数据库已损坏

我在对特定表的特定行运行
UPDATE
语句时遇到了这种情况。(特别是,我在Django管理网站上编辑一个项目。)大多数时候,数据库工作正常

我最终通过运行以下命令解决了问题:

OPTIMIZE TABLE `your_table`
之后一切正常,没有连接中断

结论:


问题“
在“读取初始通信数据包”时与MySQL服务器失去连接”
”,有时“
无法连接到“127.0.0.1”上的MySQL服务器”
”,如果数据库损坏,可以通过运行完整的数据库优化来解决。有关更多信息,请参见。

通过重新启动mac电脑,我就解决了这个问题。尽管可能有更具体的修复方法。

当我试图通过具有足够权限的用户远程连接到我的MySQL服务器时,收到了类似的错误

编辑/etc/mysql/my.cnf文件以包括

[mysqld]
bind-address=xx.xx.xxx.xxx
mysqld: ALL: allow
当xx.xx.xxx.xxx是我的本地IP地址时,我开始遇到与您完全相同的错误。从那里,我找到了一个关于这个问题的答案(由Coffee Converter回答),这个答案对我很有用,可以在这里找到:

我为自己解决这个问题所做的只是编辑/etc/hosts.allow-to-include

[mysqld]
bind-address=xx.xx.xxx.xxx
mysqld: ALL: allow

现在效果很好!我希望这有帮助:)

只是为了进一步扩展可能的原因列表:它也可能像错误的连接数据/凭据一样平淡无奇。我在使用sqlalchemy时遇到了这个错误:

sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
在我的代码中,我连接到几个不同的数据