8000 Fix error packet handling for SSCursor (#810) · rainingmaster/PyMySQL@f8c31d4 · GitHub
[go: up one dir, main page]

Skip to content

Commit f8c31d4

Browse files
ppd0705methane
authored andcommitted
Fix error packet handling for SSCursor (PyMySQL#810)
1 parent 383c043 commit f8c31d4

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

pymysql/connections.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,10 @@ def _read_packet(self, packet_type=MysqlPacket):
668668
break
669669

670670
packet = packet_type(bytes(buff), self.encoding)
671-
packet.check_error()
671+
if packet.is_error_packet():
672+
if self._result is not None and self._result.unbuffered_active is True:
673+
self._result.unbuffered_active = False
674+
packet.raise_for_error()
672675
return packet
673676

674677
def _read_bytes(self, num_bytes):

pymysql/protocol.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,14 @@ def is_error_packet(self):
213213

214214
def check_error(self):
215215
if self.is_error_packet():
216-
self.rewind()
217-
self.advance(1) # field_count == error (we already know that)
218-
errno = self.read_uint16()
219-
if DEBUG: print("errno =", errno)
220-
err.raise_mysql_exception(self._data)
216+
self.raise_for_error()
217+
218+
def raise_for_error(self):
219+
self.rewind()
220+
self.advance(1) # field_count == error (we already know that)
221+
errno = self.read_uint16()
222+
if DEBUG: print("errno =", errno)
223+
err.raise_mysql_exception(self._data)
221224

222225
def dump(self):
223226
dump_packet(self._data)

0 commit comments

Comments
 (0)
0