• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
修改MySQL默认编码的设置
发布日期:2016-4-16 14:4:45

  修改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下的mysql5为例来说一下设置方法,如下所示。

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

  $ cd /opt/local/etc/mysql5/

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

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

  $ sudo vi my.cnf

  [mysqld]

  ...

  collation_server = utf8_general_ci

  character_set_server = utf8

  3.保存退出后重启mysqld:

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

  $ sudo /opt/local/bin/mysqld_safe5 &

  4.这样就可以了。确认一下:

  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)