解决amazon RDS 出现“Illegal mix of collations (latin1_swedish_ci,IMPLICIT)”的解决办法

12 篇文章 0 订阅

今天遇到一个问题,我把数据库从EC2上安装的postgres替换为了amazon提供的RDS,之后在保存中文的时候出现错误:

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)


出现这个问题的原因是因为RDS的mysql字符集编码是latin。

因为RDS的一些安全性策略,不允许使用本地mysql workbench连接到数据库,所以只能通过EC2的机器连接过去修改字符集编码


具体操作如下:

1. 设置EC2的SG,开放mysql的端口3306

2.设置RDS的SG,允许EC2的机器连接

3. 用putty登录EC2

4.安装python 的mysql包:

apt-get install python-mysqldb

5. 输入python,进入python交互界面

6. 使用python manage.py shell进入项目的shell设置

7.输入:

>>> from django.db import connection
>>> cursor = connection.cursor()
>>> cursor.execute('SHOW TABLES')
>>> results=[]
>>> for row in cursor.fetchall(): results.append(row)
>>> for row in results: cursor.execute('ALTER TABLE %s CONVERT TO CHARACTER SET utf8 COLLATE     utf8_general_ci;' % (row[0]))

无需重启mysql,再次输入中文,一切正常 :)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值