当前位置: 首页 > 知识库问答 >
问题:

为什么mysql连接器中断(“查询期间与mysql服务器的连接丢失”错误)

魏硕
2023-03-14

当我运行大型查询(返回许多行的查询)时,我会得到在查询期间失去与MySQL server的连接的错误,而且我看不出我做错了什么。我使用来自mysql.com的“新”mysql驱动程序(而不是“旧”的MySQLdb),以及与mamp捆绑在一起的mysql版本。Python 2.7。表未损坏,分析表NRK2013B_TBL;返回状态OK。下面是一个中断的例子:

#!/usr/bin/python2.7
# coding: utf-8

import sys
import mysql.connector # version 2.0.1

connection = mysql.connector.connect(
                    unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",
                     user="dbUsernam",
                      passwd="dbUserPassword",
                      db="nrk",
                      charset = "utf8",
                      use_unicode = True)
cur = connection.cursor()
cur.execute("USE nrk;")


sql = """SELECT id FROM nrk2013b_tbl WHERE main_news_category = 'Sport'"""
cur.execute(sql)
rows = cur.fetchall()

print rows

sys.exit(0)

这导致了我大部分时间得到的错误:

Traceback (most recent call last):
  File "train_trainer_test.py", line 20, in <module>
    remaining_rows = cur.fetchall()
  File "/Library/Python/2.7/site-packages/mysql/connector/cursor.py", line 823, in fetchall
    (rows, eof) = self._connection.get_rows()
  File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 669, in get_rows
    rows = self._protocol.read_text_result(self._socket, count)
  File "/Library/Python/2.7/site-packages/mysql/connector/protocol.py", line 309, in read_text_result
    packet = sock.recv()
  File "/Library/Python/2.7/site-packages/mysql/connector/network.py", line 226, in recv_plain
    raise errors.InterfaceError(errno=2013)
mysql.connector.errors.InterfaceError: 2013: Lost connection to MySQL server during query

第20行是行=cur.fetchall()

[mysqld]
max_allowed_packet = 64M
wait_timeout = 28800
interactive_timeout = 28800
connect-timeout=31536000

PS:我暂时放弃了这一点,改为PyMySQL,而不是Oracle的mysql.connector。修改后,问题似乎就消失了(我自己得出结论,问题出在oracle mysql连接器上)。

import pymysql
conn = pymysql.connect(
                    unix_socket="/Applications/MAMP/tmp/mysql/mysql.sock",
                     user="dbUsernam",
                      passwd="dbUserPassword",
                      db="nrk",
                      charset = "utf8",
                      use_unicode = True)
conn.autocommit(True)
cur = conn.cursor()

共有1个答案

伏建修
2023-03-14

我还不得不切换到PyMySQL。我运行的是pip 1.5.6、Python 2.7.8,并尝试了mysql-connector 2.0.1

我能够在Sequel Pro中毫无问题地运行查询,但是我的Python查询在只返回一个结果子集后会出现问题中描述的错误。

切换到PyMySQL,一切按预期工作。

pip install pymysql
import pymysql

connection = pymysql.connect(user='x', passwd='x',
                                 host='x',
                                 database='x')

cursor = connection.cursor()

query = ("MYQUERY")

cursor.execute(query)

for item in cursor:
    print item
 类似资料:
  • 问题内容: 我收到 错误代码:2013。 当我尝试使用MySQL Workbench向表中添加索引时, 在查询 错误 期间失去了与MySQL服务器的连接 。我还注意到,只要我运行长时间查询,它就会出现。 是否有增加超时值的方法? 问题答案: 新版本的MySQL WorkBench具有更改特定超时的选项。 对我来说,它位于编辑→首选项→SQL编辑器→DBMS连接读取超时(以秒为单位):600 将值更

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 查询期间失去与MySQL服务器的连接 我正在将一些数据从大型csv导入mysql表。在将文件导入到表的过程中,我丢失了与服务器的连接。 怎么了? 错误代码为2013:在查询过程中失去与mySql服务器的连接。 我正在从Windows服务器上的ubuntu机器远程运行这些查询。 问题答案: 我发现此问题的最简单解决方案是将MySq

  • 问题内容: 我收到 错误代码:2013。 当我尝试使用MySQL Workbench向表中添加索引时, 在查询 错误 期间丢失了与MySQL服务器的连接 。我还注意到,只要我运行长时间查询,它就会出现。 是否有增加超时值的方法? 问题答案: 新版本的MySQL WorkBench具有更改特定超时的选项。 对我来说,它位于编辑Preferences首选项SQL SQL编辑器DB DBMS连接读取超时

  • 问题内容: 当我使用节点mysql时,在12:00到2:00之间出现错误,表明服务器已关闭TCP连接。这是完整的消息: 有解决办法。但是,以这种方式尝试后,问题也会出现。现在我不知道该怎么办。有人遇到这个问题吗? 这是我按照解决方案编写的方式: 问题答案: 尝试使用以下代码来处理服务器断开连接: 在您的代码中,我错过了之后的部分

  • 我使用以下代码构建这个简单的查询: 但是当我调用fdQuery1.OpenOrexecute时,我会得到错误消息,正如本文主题中所述。 TIA 杨瑜伽士

  • 我有一个SQL查询,有2个子查询。每当我在macOS上的MySQL Workbench上运行它时,它都会给出“错误代码:2013。查询时失去与MySQL服务器的连接”。但是,当它在Windows上的Workbench上运行时,它正常运行,没有任何错误。我试图增加连接超时,但仍然没有成功!关于如何解决这个问题有任何线索吗?我感谢您的支持和合作。 下面是一个给出错误的查询: