django.db.utils.OperationalError: (1366, "不正确的字符串值) django mysql

art*_*_cs 0 mysql apache django ubuntu

嗨,我创建了一个 django 项目,并尝试将它部署在带有 mysql 数据库的 ubuntu apache 服务器上

但是当我运行时出现python3 manage.py migrate此错误:

django.db.utils.OperationalError: (1366, "不正确的字符串值: '\xD9\x88\xDB\x95\xD8\xB3...' 列 'name' 在第 1 行")

我只有一列名为 name = models.CharField(max_length=30)

当我运行show variables like 'char%';输出是:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Run Code Online (Sandbox Code Playgroud)

在我的/etc/mysql/my.cnf设置中[client] default-character-set = utf8 是否有我错过的东西?!

Sac*_*dav 7

“utf8”编码仅支持每个字符三个字节,因此您不能使用 utf-8 字符集在 MySQL 中存储 4 个字节的字符。

有关更多信息,请阅读此内容

1.更改您的MySQL数据库、表和列以使用utf8mb4字符集

2.在你的settings.py中

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.mysql',
        ...
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}
Run Code Online (Sandbox Code Playgroud)