解决Django向MySQL写入中文字符报错:修改字符集与重建数据库详解

Mia
Mia
发布时间:2026-10-13 | 4人浏览过
原创

本文详细记录了Django项目中向MySQL写入中文字符报错的解决方案。主要步骤包括修改MySQL配置文件my.cnf设置utf8字符集,验证字符集变量,以及关键的重建数据库操作。通过新建数据库并执行makemigrations和migrate命令,确保表结构支持中文,从而彻底解决写入错误问题。

Django MySQL中文写入报错原因

在使用Django结合MySQL构建网站时,向数据库写入中文字符常会引发报错。即便尝试修改了settings文件及数据表的字符集,问题仍未解决。最终确认,在更改MySQL字符集后,必须重建数据库才能生效。

以下是完整的解决方案记录。

修改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

这将创建用户表及models中自定义的表格,表结构与之前相同。随后将数据复制到新表中即可。

补充:另一种解决思路【慎用】

补充知识:解决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 相关产品和应用

全部下载

专题列表