mysql 设置编码报错_修改MySQL的默认编码设置

最近在MacOS下用django框架做web开发,于是用MacPorts安装了MySQL5。但是测试时django的测试框架会报错,原因是UTF8数据无法插入。

我们知道,MySQL安装完成后默认编码为latin1,并不适合中文应用。因此我们通常用下面的SQL语句创建:

CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;而django测试框架创建测试数据库时并不会像这样指定编码,因此创建的数据库编码为latin1,导致加载UTF8数据时就会出错。

貌似django并没有提供创建数据库时指定编码的选项,因此只能修改MySQL服务器的默认编码设置。下面以MacPorts下的5为例说一下设置方法。

首先复制一份my.cnf到 /opt/local/etc/mysql5:

$ cd /opt/local/etc/mysql5/

$ sudo cp /opt/local/share/mysql5/mysql/my-small.cnf my.cnf

然后编辑my.cnf,在[mysqld]节添加以下两行:

$ sudo vi my.cnf

[mysqld]

...

collation_server = utf8_general_ci

character_set_server = utf8保存退出后重启mysqld:

$ sudo /opt/local/bin/mysqladmin5 -u root shutdown

$ sudo /opt/local/bin/mysqld_safe5 &这样就可以了。确认一下:

mysql> show variables like collation_server;

+------------------+-----------------+

| Variable_name    | Value           |

+------------------+-----------------+

| collation_server | utf8_general_ci |

+------------------+-----------------+

1 row in set (0.00 sec)

mysql> show variables like character_set_server;

+----------------------+-------+

| Variable_name        | Value |

+----------------------+-------+

| character_set_server | utf8  |

+----------------------+-------+

1 row in set (0.00 sec)

charlee

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值