嗨,我创建了一个 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
有什么我错过的吗?!
“utf8”编码仅支持每个字符三个字节,因此,您无法使用 utf-8 字符集在 MySQL 中存储 4 字节字符。
欲了解更多信息,请阅读此
1.更改您的MySQL数据库、表和列以使用utf8mb4字符集
2.在你的settings.py
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
...
'OPTIONS': {'charset': 'utf8mb4'},
}
}
我将“mysql”更改为“mariadb”并且它可以工作。
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'
如果您在迁移city_light时删除它,它应该可以工作,请确保在迁移后再次添加它