Comment 2 for bug 918118

Revision history for this message
Sunfox (sunfox) wrote :

BrokenPipe error occurs if myconnpy is connected to mysql with unix socket:

>>> from mysql.connector import Connect
>>> db = Connect(unix_socket="/var/run/mysqld/mysqld.sock", user="user", password="pwd", database="db")
>>> db.is_connected()
{'insert_id': 0, 'affected_rows': 0, 'field_count': 0, 'warning_count': 0, 'server_status': 0}

now I stop mysqld

>>> db.is_connected()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mysql/connector/connection.py", line 479, in is_connected
    return self.protocol.cmd_ping()
  File "mysql/connector/protocol.py", line 136, in deco
    return func(*args, **kwargs)
  File "mysql/connector/protocol.py", line 614, in cmd_ping
    self.conn.send(pkt,self.next_pktnr)
  File "mysql/connector/connection.py", line 100, in send_plain
    raise errors.OperationalError('%s' % e)
mysql.connector.errors.OperationalError: [Errno 32] Broken pipe

If I use TCP connection instead, returns "Expected OK packet" as You wrote.

IMO is_connected should send command calls in try except and return bool.