Django OperationalError 2019无法初始化字符集utf8mb4

时间:2013-09-13 22:25:02

标签: mysql django heroku django-celery amazon-rds

我整天都在努力解决这个问题,但却无法找到解决方案,甚至找不到错误的根本原因。当我在本地运行我的应用程序时它工作正常。我的生产实例正在使用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

提前感谢您的帮助。如果有更多我缺少的细节,请告诉我。

3 个答案:

答案 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。许多像人物一样奇怪的画面都是。