解决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 时间处理datetime实例
Sep 06 Python
python搭建微信公众平台
Feb 09 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
python自动12306抢票软件实现代码
Feb 24 Python
简单实现python数独游戏
Mar 30 Python
python绘制直线的方法
Jun 30 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 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
PHP出错界面
2006/10/09 PHP
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
开源Web应用框架Django图文教程
2017/03/09 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
python实现UDP协议下的文件传输
2020/03/20 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
自荐书模板
2013/12/19 职场文书
新年联欢会主持词
2014/03/27 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
muduo TcpServer模块源码分析
2022/04/26 Redis
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang