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

问题描述 投票:0回答:3

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

但是当我运行

python3 manage.py migrate
时,我收到此错误:

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

我只有一栏名为

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/ |
+--------------------------+----------------------------+

在我的

/etc/mysql/my.cnf
中我设置了
[client] default-character-set = utf8
有什么我错过的吗?!

mysql django apache ubuntu
3个回答
15
投票

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

欲了解更多信息,请阅读

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

2.在你的settings.py

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.mysql',
        ...
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

0
投票

我将“mysql”更改为“mariadb”并且它可以工作。


0
投票
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'

如果您在迁移city_light时删除它,它应该可以工作,请确保在迁移后再次添加它

© www.soinside.com 2019 - 2024. All rights reserved.