我有一个python 2.7应用程序(Edgewall Trac),它连接到部署在AWS RDS上的MySQL v5.7 db。多个PHP应用程序也可以访问同一个db。AWS最近通知我,对MySQL v5.7的支持将停止,我应该切换到MySQL v8.0。
我在没有数据丢失的情况下升级了数据库,但不得不将character_set参数设置为utf8 as described here:
character_set_client -> "utf8"
character_set_connection -> "utf8"
character_set_server -> "utf8"
字符串
重新启动数据库后,PHP应用程序工作正常;但是python 2.7 + PyMySQL 0.10.1仍然无法连接。它抛出了相同的错误as discussed here,所以看起来编码仍然不是PyMySQL所期望的。我尝试设置所有字符编码和排序参数,我可以找到这样的:
character_set_database -> "utf8"
character_set_results -> "utf8"
collation_connection -> "utf8_unicode_ci"
collation_server -> "utf8_unicode_ci"
型
然而,在更改+ db重新启动后,我仍然得到相同的错误。
第一个月
还有其他建议可以尝试吗?或者继续使用MySQL v5.7几乎是唯一的选择?
1条答案
按热度按时间eiee3dmh1#
我能够找到一个解决方案。数据库模式最初是使用utf8/utf8-bin作为字符集和排序规则创建的。将其转换为utf8 mb 4/utf8mb4_bin使pymysql的一切再次工作,而无需设置除PHP所需之外的任何参数。我从MySQL MySQL中运行了以下查询:
字符串
然后要更新表,运行下面的查询,复制输出并再次作为查询运行:
型
(credit to the post in this discussion)