2016-01-13 3 views
1

Я бегу запрос с использованием pymysql в Python 3, что-то вроде:MySQL ушел с pymysql

conn = 'con info here' 

cur = conn.cursor() 

cu.execute('sql goes here') 

Запрос идет между строк:

load data 
local infile 'file path' 
ignore into table table_name 
fields terminated by '/t' 
optionally enclosed by '"' 
lines terminated by '\r\n' 
ignore 1 lines 

(@col1, 
@col2, 
@col3) 
set 
(col1indb = @col1, 
col2indb = @col2, 
col3indb = @col3) 

Когда я выполнить запрос , Я сразу же получаю следующее:

File "/opt/python3/lib/python3.4/site-packages/pymysql/cursors.py", line 296, in _query 
    conn.query(q) 
    File "/opt/python3/lib/python3.4/site-packages/pymysql/connections.py", line 781, in query 
    self._affected_rows = self._read_query_result(unbuffered=unbuffered) 
    File "/opt/python3/lib/python3.4/site-packages/pymysql/connections.py", line 942, in _read_query_result 
    result.read() 
    File "/opt/python3/lib/python3.4/site-packages/pymysql/connections.py", line 1143, in read 
    self._read_load_local_packet(first_packet) 
    File "/opt/python3/lib/python3.4/site-packages/pymysql/connections.py", line 1178, in _read_load_local_packet 
    sender.send_data() 
    File "/opt/python3/lib/python3.4/site-packages/pymysql/connections.py", line 1317, in send_data 
    self.connection._write_bytes(packet) 
    File "/opt/python3/lib/python3.4/site-packages/pymysql/connections.py", line 929, in _write_bytes 
    raise err.OperationalError(2006, "MySQL server has gone away (%r)" % (e,)) 
pymysql.err.OperationalError: (2006, "MySQL server has gone away (BrokenPipeError(32, 'Broken pipe'))") 

Поскольку ошибка происходит немедленно, я уверен, что это не перерыв. Каждый отдельный запрос, который я запускаю, работает нормально, даже похожие запросы загрузки.

Мой вопрос в том, что в синтаксисе MySQL может вызвать эту ошибку ??

Спасибо!

ответ

0

У меня такая же проблема с pymysql, python3.5 и удаленным сервером MySQL. Когда я пытаюсь вставить запись с огромными полями LONGTEXT (например, man gcc 4 раза), она ответит на ту же ошибку: MySQL server has gone away (BrokenPipeError(32, 'Broken pipe')). Он хорошо работает, когда я использую только короткую текстовую строку, что-то вроде «HELLO WORLD».

+0

У меня есть ответ на мой случай: мне пришлось изменить 'max_allowed_packet', так что теперь он может принимать более крупный sql-запрос. –