I get an error message, trying to connect to a remote mysql database from a Windows 7 client through python 2.7 + MySQLdb 1.2.5 + sqlalchemy 1.0.9 . This is the result of a recent change in the default server character set to utf8mb4 . The server is running MySQL 5.5.50 .
I connect as follows:
DB_ENGINE = sqlalchemy.create_engine("mysql+mysqldb://{user}:{pass}@{host}:{port}/{database}?charset=utf8mb4".format(**DB_SETTINGS)) Session = sqlalchemy.orm.sessionmaker(bind=DB_ENGINE)
Mistake:
File "C:\Applications\Python27\lib\site-packages\sqlalchemy\engine\default.py", line 385, in connect return self.dbapi.connect(*cargs, **cparams) File "C:\Applications\Python27\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect return Connection(*args, **kwargs) File "C:\Applications\Python27\lib\site-packages\MySQLdb\connections.py", line 221, in __init__ self.set_character_set(charset) File "C:\Applications\Python27\lib\site-packages\MySQLdb\connections.py", line 312, in set_character_set super(Connection, self).set_character_set(charset) sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2019, "Can't initialize character set utf8mb4 (path: C:\\mysql\\\\share\\charsets\\)")
The my.cnf server contains the following:
init_connect = 'SET collation_connection = utf8mb4_unicode_ci' init_connect = 'SET NAMES utf8mb4' character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci skip-character-set-client-handshake
I have no problem connecting to the database from the Ubuntu client, so I suspect that the problem is with the Windows client and not with the server configuration.
The MySQL documentation suggests that the error message may be due to client compilation without multibyte character support:
http://dev.mysql.com/doc/refman/5.7/en/cannot-initialize-character-set.html
However, since it is Windows, I just load the client and have no control over its compilation flags.
I tried installing MySQLdb in various ways:
- Download and install MySQL Connector / Python.msi from dev.mysql.com
- Download and install MySQLdb 1.2.5.exe from pypi
- Running "pip install mysql-python" from a Windows command prompt
Each of these results is a MySQLdb library that cannot process the utf8mb4 character set.
Any help would be greatly appreciated!
python windows mysql mysql-python utf8mb4
Jugdish
source share