我整天都在努力解决这个问题,但却无法找到解决方案,甚至找不到错误的根本原因。当我在本地运行我的应用程序时它工作正常。我的生产实例正在使用Heroku雪松堆栈和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
提前感谢您的帮助。如果有更多我缺少的细节,请告诉我。
答案 0 :(得分:5)
事实证明问题在于Heroku以及他们缺乏对所需库的支持:
以下是Heroku的支持人员告诉我的事情:
此编码需要MySQL的libmysqlclient的最新版本 C共享库。抱歉,我们目前没有升级计划 这个图书馆在不久的将来。您可以构建自己的版本 遵循以下说明的二进制依赖项 https://devcenter.heroku.com/articles/buildpack-binaries
答案 1 :(得分:1)
对于未来的读者:截至2014年底,该特定问题的解决方案是使用cedar-14堆栈,其中包括最新的mysql二进制文件(由我测试)。 一般的解决方案是编译自己的二进制文件并创建一个自定义的buildpack,如advised by the heroku people。
答案 2 :(得分:-3)
是utf8mb4。许多像人物一样奇怪的画面都是。