5

我整天都在为此苦苦挣扎,却找不到解决方案,甚至找不到错误的根本原因。当我在本地运行我的应用程序时,它工作正常。我的生产实例使用 Heroku cedar 堆栈和 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

在此先感谢您的帮助。让我知道是否有更多我遗漏的细节。

4

3 回答 3

5

原来问题在于 Heroku 以及他们缺乏对所需库的支持:

以下是 Heroku 的支持人员告诉我的:

这种编码需要 MySQL 的 libmysqlclient C 共享库的最新版本。抱歉,我们目前没有计划在不久的将来升级这个库。您可以按照https://devcenter.heroku.com/articles/buildpack-binaries上的说明构建自己的二进制依赖项版本

于 2013-09-27T22:17:20.827 回答
1

对于未来的读者:截至 2014 年底,该特定问题的解决方案是使用 cedar-14 堆栈,其中包括最新的 mysql 二进制文件(由我测试)。按照 heroku people 的建议,一般的解决方案是编译您自己的二进制文件并创建自定义 buildpack 。

于 2015-01-21T08:46:18.350 回答
-3

例如是 utf8mb4。许多像人物一样奇怪的图片。

于 2013-10-24T15:08:06.437 回答