【问题标题】:django.db.utils.OperationalError: (1366, "Incorrect string value) django mysqldjango.db.utils.OperationalError: (1366, "Incorrect string value) django mysql
【发布时间】:2020-11-18 08:14:42
【问题描述】:

您好,我创建了一个 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


    【解决方案1】:

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

    更多信息请阅读this

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

    2.在你的 settings.py

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

    【讨论】:

    • 所以你必须把它改成 utf8mb4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多