Browse Source

readUntilEOF should support ERR packet

fixes #464
INADA Naoki 9 years ago
parent
commit
c6f610244e
1 changed files with 11 additions and 8 deletions
  1. 11 8
      packets.go

+ 11 - 8
packets.go

@@ -729,16 +729,19 @@ func (rows *textRows) readRow(dest []driver.Value) error {
 func (mc *mysqlConn) readUntilEOF() error {
 	for {
 		data, err := mc.readPacket()
-
-		// No Err and no EOF Packet
-		if err == nil && data[0] != iEOF {
-			continue
-		}
-		if err == nil && data[0] == iEOF && len(data) == 5 {
-			mc.status = readStatus(data[3:])
+		if err != nil {
+			return err
 		}
 
-		return err // Err or EOF
+		switch data[0] {
+		case iERR:
+			return mc.handleErrorPacket(data)
+		case iEOF:
+			if len(data) == 5 {
+				mc.status = readStatus(data[3:])
+			}
+			return nil
+		}
 	}
 }