我为此苦苦挣扎了一整天,一直未能找到解决方案,甚至找不到错误的根本原因。当我在本地运行我的应用程序时,它工作正常。我的生产实例使用 Heroku cedar stack 和 Amazon RDS MySQL 数据库。
在我的设置文件中,我有:'OPTIONS': {'charset': 'utf8mb4'}
当我推送到 Heroku 时,它崩溃并出现错误:_mysql_exceptions.OperationalError: (2019, "Can't initialize character set utf8mb4 (path:/usr/share/mysql/charsets/)")
异常位置:/app/.heroku/python/lib/python2.7/site-packages/MySQLdb/connections.py in set_character_set, line 298
我已经使用 Amazon RDS MySQL 创建了适当的数据库参数,目前设置如下:
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.6.13.R1/share/charsets/ |
+--------------------------+-------------------------------------------+
我在运行:
MySQL 5.6.13
MySQL-python==1.2.4
在此先感谢您的帮助。如果我遗漏了更多详细信息,请告诉我。
最佳答案
原来问题出在 Heroku 上,他们缺乏对所需库的支持:
这是 Heroku 的支持人员告诉我的:
This encoding requires an up-to-date version of MySQL's libmysqlclient C shared library. Sorry but we don't currently have plans to upgrade this library in the immediate future. You can build your own versions of binary dependencies by following the instructions at https://devcenter.heroku.com/articles/buildpack-binaries
关于mysql - Django OperationalError 2019 无法初始化字符集utf8mb4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18796168/