Warum macht mysql connector Pause ("Lost connection to MySQL server during query" - Fehler)

Wenn ich große Abfragen (queries Rückkehr viele Zeilen), bekomme ich die Lost connection to MySQL server during query Fehler, und ich kann nicht sehen, was ich falsch mache. Ich benutze die "neue" mysql-Treiber aus mysql.com (nicht die "alte" MySQLdb), und die mysql-version, die im Bundle mit MAMP. Python 2.7. Tisch ist nicht beschädigt, analyze table nrk2013b_tbl; gibt den status ok. Hier ist ein Beispiel, das bricht:

#!/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)

Diese Ergebnisse in der Fehlermeldung, die ich bekommen die meisten die Zeit:

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

Zeile 20 ist die rows = cur.fetchall()

Wenn ich die Grenze des Abfrage-Ergebnis weniger Ergebnis SELECT id FROM nrk2013b_tbl WHERE main_news_category = 'Sport' LIMIT 10 alles ist gut. Aber ich will die Arbeit mit größeren Ergebnismengen. Für einige ad-hoc-Problemlösung habe ich verschoben, die Grenze gebrochen und die Daten, die ich wollte in kleineren Chargen, aber das taucht immer wieder als problem.

In Anspruch nehmen, die connect-timeout, und max_allowed_packet usw. zu berücksichtigen, habe ich dieses meine.cnf-Datei: File: /Applications/MAMP/conf/my.cnf

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

Diese scheinen nicht zu keinen Unterschied machen (ich bin mir auch nicht sicher, ob mysql erkennt diese Einstellungen). Wenn ich ausführen von Abfragen aus dem terminal oder von Sequel Pro, es funktioniert gut. Es ist nur durch die python-mysql.Stecker bekomme ich diese Fehler.

Irgendwelche Ideen?

PS: ich habe vorübergehend gegeben, und geändert, um PyMySQL anstelle von Oracle mysql.- Anschluss. Durch den Wechsel zu diesem, der Probleme scheint zu verschwinden (und ich schließe für mich, dass das problem in der oracle-mysql-connector).

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) # this I 
cur = conn.cursor()
FYI: dev.mysql.com/doc/refman/5.0/en/...
Das sieht perfekt aus, ich kann einfach nicht scheinen, um es zu arbeiten. Wenn ich die Abfragen aus dem terminal oder von Sequel Pro, es funktioniert gut. Es ist nur, wenn ich es durch die python-mysql.Stecker bricht.
Gleichen Thema arbeiten mit python 3.6.5 auf macOS. Wechsel von mysql.Anschluss an pymysql hat den trick. Danke.

InformationsquelleAutor Eiriks | 2014-10-22

Schreibe einen Kommentar