Browse Source

Merge pull request #473 from methane/fix-464

readUntilEOF should support ERR packet
Julien Schmidt 9 years ago
parent
commit
0b58b37b66
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
+		}
 	}
 }