解决django 向mysql中写入中文字符出错的问题


Posted in Python onMay 18, 2020

之前使用django+mysql建立的一个站点,发现向数据库中写入中文字符时总会报错,尝试了修改settings文件和更改数据表的字符集后仍不起作用。最后发现,在更改mysql的字符集后,需要重建数据库,才能起作用。

这里完整记录一下解决方案

首先更改mysql的字符集

ubuntu下找到/etc/mysql/my.cnf   在最后添加

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

用mysql -h localhost -u root -p 命令进入mysql 命令行

然后使用 show variables like 'character_set%'; 查看字符集设置,看到 client server database 为utf8即为成功

但是我的django依然报错,只能重建数据库,如果数据库文件不多,重建数据库的工作量其实非常小

首先建立新的数据库,此时默认编码格式就是utf8,已经支持中文、

然后修改settings.py中的database项的name为新的数据库名

最后执行数据库迁移即可,在包含manage.py文件夹目录下

python manage.py makemigrations

python manage.py migrate

即可创建用户表和modle中自定的表格,表结构与原来相同,将数据复制到新表即可

补充知识:解决django字符集 输入汉字之后mysql数据库报错的问题【慎用】

解决思路:

启动mysql数据库 net start mysql

之后: mysql -u root -p

查看数据库字符集 show variables like ‘character%';

发现 character-set-server 和 character_set_database 的值为latin1

解决方案:

编辑查看MySQL文件夹下的my.ini 配置文件

在[mysqld]下添加 character-set-server=utf8

systemctl restart mysql 重启 MySQL Server,再此查看字符集变量,发现已经是utf8

drop database 【已经添加的数据库】 并 create database 【新数据库】

问题解决!

此方法简单粗暴,慎用!数据库里面的文件还要重写,比较麻烦,不过可以在创建数据库之后,添加一条数据,利用自定义的django图形化界面,再添加数据也是可以的。

以上这篇解决django 向mysql中写入中文字符出错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中引用与复制用法实例分析
Jun 04 Python
详解C++编程中一元运算符的重载
Jan 19 Python
Python实现图片转字符画的示例
Aug 22 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
使用python为mysql实现restful接口
Jan 05 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
详解Python的三种拷贝方式
Feb 11 Python
什么是python的id函数
Jun 11 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
Python语言中的数据类型-序列
Feb 24 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 #Python
python实现人像动漫化的示例代码
May 17 #Python
django日志默认打印request请求信息的方法示例
May 17 #Python
使用pyecharts1.7进行简单的可视化大全
May 17 #Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 #Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 #Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 #Python
You might like
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
浅谈js中的this问题
2017/08/31 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python生成式的send()方法(详解)
2017/05/08 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
python自动化生成IOS的图标
2018/11/13 Python
Python基于百度云文字识别API
2018/12/13 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
邮政员工辞职信
2014/01/16 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
副董事长岗位职责
2014/04/02 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
推广普通话标语
2014/06/27 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers
python pygame 开发五子棋双人对弈
2022/05/02 Python
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技