本人 python+django+MySQL 环境
类似 Incorrect string value: '\xF4\x8F\xAE\xB3 这样的错误
首先通过 show variables like'%char%' 命令,查看mysql配置的编码
show variables like'%char%'
下面是我的mysql编码状态,这些根据目前本人的知识量最好是 utf8编码,我的mac机器安装的时候character_set_server 是latin1格式的,所以必须要改一下编码格式
更改server 编码,其他类似
1.关闭本机MySQL服务
1)通过系统偏好设置 停止 MySQL 服务或者通过代码
sudo /usr/local/mysql/support-files/mysql.server stop
2.修改mysql配置文件 /etc/my.cnf
有些MySQL版本中没有my-medium.cnf 这个文件而是my-default.cnf
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf (复制my-default.cnf 到 /etc/my.cnf)
sudo vi /etc/my.cnf
[client]部分加入:
default-character-set=utf8
[mysqld]部分加入:
character-set-server=utf8
通过vi 修改.cnf文件后不要忘了 wq 保存修改
3.重启MySQL服务
cd /usr/local/mysql/bin (进入目录)
sudo su (获取权限)
./mysqld_safe --skip-grant-tables & (重启服务器)
control+D (退出当前编辑模式)
4.删除之前的数据库
很多朋友可能和我一样修改完上面的.cnf文件后,以为就ok了,但是还是一样的错误
这是需要把之前的数据库删除,当然数据还是要自己保留一下的
drop database <数据库名>
5.重新创建UTF-8编码的数据库
CREATE DATABASE <数据库名称> DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
6.Django 同步数据库
先注释掉 admin.py models.py 所有model,执行下面代码,然后把注释掉的代码取消,再重新执行下面代码
python3 manage.py makemigrations
python3 manage.py migrate
7. 登陆Django admin 后台
插入中文字符成功,到此结束