(1366, "Incorrect string value: '\xE7\x94\xA8\xE6\x88\xB7' for column 'name'

来源:3-6 migrations原理及表生成

Timm_Lee

2017-09-22

数据库migrate时遇到字符集问题,已解决。供后来人参考。


1、问题:

在 python manage.py migrate 时出现如下错误:


django.db.utils.InternalError: (1366, "Incorrect string value: '\xE7\x94\xA8\xE6\x88\xB7' for column 'name' at row 1")


属于mysql数据编码的问题。


关键性解决思路:

* 修改mysql配置文件

* 增加mysql连接时的字符设定


2、修改mysql配置文件

在ubuntu上是:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf


在 [mysqld] 和 [client] 部分分别增加内容

http://szimg.mukewang.com/59c46bfb0001474e07760198.jpg

http://szimg.mukewang.com/59c46c09000165b605380124.jpg


重启mysql服务以后,进入mysql查询字符集,可以发现从默认的latin1改为了utf-8。

http://szimg.mukewang.com/59c46c3e0001d10e10000930.jpg


3、设置mysql连接时为utf-8

Django 的 settings.py 中,数据库连接部分,

  'OPTIONS': { 'init_command': 'SET default_storage_engine=INNODB,character_set_connection=utf8,collation_connection=utf8_unicode_ci;' }

http://szimg.mukewang.com/59c46c6c0001c6da27160460.jpg




写回答

1回答

bobby

2017-09-25

点个赞

5
1
Timm_Lee
非常感谢!
2017-09-25
共1条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2793 学习 · 2437 问题

查看课程