Mik*_*keN 18 mysql django utf-8
我有utf-8 Vs. 这里提到的字节串问题:Django头痛与简单的非ascii字符串
我不关心MySQL列中的区分大小写匹配,我只是总是想要返回UTF-8字符串,因为我发现不可能处理为非ascii文本返回字符列的字节串.
如何更改我的MySQL排序规则类型,以便始终通过Django返回UTF-8字符串?
Ero*_*eal 25
您需要了解数据库/表/列级别的字符集/排序规则设置.列级设置优先于其他设置.因此,我将包含可用于在db的每个级别执行这些更改的命令.
检查您当前的配置(数据库):
SHOW CREATE DATABASE db_name;
检查您当前的配置(表):
SHOW TABLE STATUS WHERE name='tbl_name'
检查当前配置(列):
SHOW FULL COLUMNS FROM tbl_name;
更改字符集/排序规则(数据库):
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8;
更改字符集/排序规则(表格):
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8;
更改字符集/排序规则(列):
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;
在Django中,您必须编写自己的迁移文件:
./manage.py makemigrations --empty app_name
Run Code Online (Sandbox Code Playgroud)
并使用以下sql命令填充空白迁移:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0008_prev_migration'),
]
operations = [
migrations.RunSQL('ALTER DATABASE db_name DEFAULT CHARACTER SET utf8;'),
migrations.RunSQL('ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8;'),
migrations.RunSQL('ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;'),
]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13301 次 |
最近记录: |