首页 > 应用开发 > Python > mysqlconnect bug 处理一例。
python 3.6 遇到这个问题。
其实不是 python 的问题 是 mysqlconnect 驱动的问题。
用 mysqlconnect 去链接 mysql 5.5.x 版本的数据库的时候。 就报这个错误了。
修改方法放这里了。
C:\Python36\Lib\site-packages\mysql\connector\protocol.py
mysql connect 的这个 protocol.py 代码
第 225 行 。
capabilities & ClientFlag.PLUGIN_AUTH: (packet res[].startswith()):
把
and res['server_version_original'].startswith("5.5.8")):
修改为
and (res['server_version_original'].startswith("5.5.8") or res['server_version_original'].startswith("5.5.9"))):
然后保存 从新 链接数据库就可以了。
当然了 ,如果你用的 5.5.x 就再后面不停的加 or 然后加版本就行了。
这本身是 mysql 的一个bug
好了,问题就再这里了。
出错信息 在下面。
>>> import os ,sys
>>> import dba1 as dba
python 版本 ok
>>> db=dba.mysql('192.168.x.x',3306,'hounew','hounew','hounew')
Traceback (most recent call last):
File "C:\Python36\lib\site-packages\mysql\connector\utils.py", line 279, in read_string
idx = buf.index(end)
ValueError: subsection not found
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python36\lib\site-packages\mysql\connector\connection.py", line 152, in _do_handshake
handshake = self._protocol.parse_handshake(packet)
File "C:\Python36\lib\site-packages\mysql\connector\protocol.py", line 233, in parse_handshake
packet, end=b'\x00')
File "C:\Python36\lib\site-packages\mysql\connector\utils.py", line 281, in read_string
raise ValueError("end byte not present in buffer")
ValueError: end byte not present in buffer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
db=dba.mysql('192.168.75.100',3306,'houselib_new','houselib_new','houselib_new')
File "C:\Python36\lib\dba1.py", line 286, in __init__
self.conn = connection.MySQLConnection(host=host, port=port, user=user, password=passwd, database=database)
File "C:\Python36\lib\site-packages\mysql\connector\connection.py", line 104, in __init__
self.connect(**kwargs)
File "C:\Python36\lib\site-packages\mysql\connector\abstracts.py", line 960, in connect
self._open_connection()
File "C:\Python36\lib\site-packages\mysql\connector\connection.py", line 289, in _open_connection
self._do_handshake()
File "C:\Python36\lib\site-packages\mysql\connector\connection.py", line 155, in _do_handshake
raise errors.get_mysql_exception(msg=err.msg, errno=err.errno,
AttributeError: 'ValueError' object has no attribute 'msg'
>>>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-2748529/ ,如需转载,请注明出处,否则将追究法律责任。