Description:
Connector/Python does not accept Unicode string as a database name.
How to repeat:
$ python -V
Python 2.6.6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import mysql.connector
connection = mysql.connector.connect(
database=u'scott', user='scott', password='tiger')
connection.close()
$ python cp.py
Traceback (most recent call last):
File "cp.py", line 6, in <module>
database=u'scott', user='scott', password='tiger')
File "/usr/lib/python2.6/site-packages/mysql/connector/__init__.py", line 44, in Connect
return MySQLConnection(*args, **kwargs)
File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 108, in __init__
self.connect(**kwargs)
File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 356, in connect
self._open_connection()
File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 323, in _open_connection
self._ssl)
File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 156, in _do_auth
charset=charset, client_flags=client_flags)
File "/usr/lib/python2.6/site-packages/mysql/connector/protocol.py", line 92, in make_auth
'\x00' * 23 + auth[0] + auth[1] + auth[2]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa2 in position 1: ordinal not in range(128)
Suggested fix:
--- protocol.py_orig 2013-07-02 00:49:28.730544919 +0900
+++ protocol.py 2013-07-02 00:50:19.016888797 +0900
@@ -71,6 +71,8 @@
_password = '\x00'
if db is not None and len(db):
+ if isinstance(db, unicode):
+ db = db.encode('utf8')
_database = db + '\x00'
else:
_database = '\x00'
Description: Connector/Python does not accept Unicode string as a database name. How to repeat: $ python -V Python 2.6.6 #!/usr/bin/env python # -*- coding: utf-8 -*- import mysql.connector connection = mysql.connector.connect( database=u'scott', user='scott', password='tiger') connection.close() $ python cp.py Traceback (most recent call last): File "cp.py", line 6, in <module> database=u'scott', user='scott', password='tiger') File "/usr/lib/python2.6/site-packages/mysql/connector/__init__.py", line 44, in Connect return MySQLConnection(*args, **kwargs) File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 108, in __init__ self.connect(**kwargs) File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 356, in connect self._open_connection() File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 323, in _open_connection self._ssl) File "/usr/lib/python2.6/site-packages/mysql/connector/connection.py", line 156, in _do_auth charset=charset, client_flags=client_flags) File "/usr/lib/python2.6/site-packages/mysql/connector/protocol.py", line 92, in make_auth '\x00' * 23 + auth[0] + auth[1] + auth[2] UnicodeDecodeError: 'ascii' codec can't decode byte 0xa2 in position 1: ordinal not in range(128) Suggested fix: --- protocol.py_orig 2013-07-02 00:49:28.730544919 +0900 +++ protocol.py 2013-07-02 00:50:19.016888797 +0900 @@ -71,6 +71,8 @@ _password = '\x00' if db is not None and len(db): + if isinstance(db, unicode): + db = db.encode('utf8') _database = db + '\x00' else: _database = '\x00'