ubuntu下mysql中文无法存储_Ubuntu下MySQL中文乱码的问题解决

在使用Django与MySQL交互时遇到中文插入数据警告,问题源于数据库字符集设置为latin1。通过修改数据库和服务器的字符集为utf8解决了问题,但在MySQL重启后设置失效。永久解决方案是在my.cnf配置文件中添加默认utf8字符集,并重启MySQL服务,确保数据库编码持久生效。
摘要由CSDN通过智能技术生成

发现问题

最近一段时间学习Django,在进行与MySQL数据联合使用的插入数据的时候遇到下边的问题:

/usr/local/lib/python2.7/dist-packages/Django-1.11.dev20170117002028-py2.7.egg/django/db/backends/mysql/base.py:109: Warning: Incorrect string value: 'xE6x88x90xE5x8Ax9F...' for column 'json' at row 1

return self.cursor.execute(query, args)

[07/Feb/2017 12:15:21] "GET /index/ HTTP/1.1" 200 250

中文无法插入MySQL数据库~!~!

查看数据库编码

mysql> show create database bangjob;

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

| Database | Create Database |

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

| bangjob | CREATE DATABASE `bangjob` /*!40100 DEFAULT CHARACTER SET latin1 */ |

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

1 row in set (0.00 sec)

mysql> show variables like'%char%';

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

| Variable_name | Value |

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

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

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

8 rows in set (0.00 sec)

修改数据库编码

mysql> set character_set_database=utf8;

Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_server=utf8;

Query OK, 0 rows affected (0.00 sec)

查看修改后的结果

mysql> show variables like'%char%';

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

| Variable_name | Value |

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

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

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

8 rows in set (0.00 sec)

这时候继续插入就没有任何问题了。

如果真的是这样简单就好了,因为这样的修改作者在重启MySQL的后设置失效!!!

继续寻找其它方法

sudo gedit /etc/mysql/my.cnf

在my.cnf文件的对应节点添加一下信息:

[client]

default-character-set=utf8

[mysqld]

default-character-set=utf8

[mysql]

default-character-set=utf8

然后重启MySQL:

/etc/init.d/mysql start

如果能重启那么再次查看数据库编码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值