解决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脚本将Bing的每日图片作为桌面的教程
May 04 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
Python验证码识别的方法
Jul 10 Python
Python通过Django实现用户注册和邮箱验证功能代码
Dec 11 Python
python代码实现ID3决策树算法
Dec 20 Python
pytorch构建网络模型的4种方法
Apr 13 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
如何使用pycharm连接Databricks的步骤详解
Sep 23 Python
python实现控制台输出颜色
Mar 02 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 Python
Python正则表达式中flags参数的实例详解
Apr 01 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
javascript 运算数的求值顺序
2011/08/23 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
微信小程序 图片边框解决方法
2017/01/16 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
Python如何实现邮件功能
2020/05/27 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
大二学生学习个人自我评价
2014/01/19 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
三方股东合作协议书
2014/10/28 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
React配置子路由的实现
2021/06/03 Javascript