我有一个字符字段utf8
我希望它是utf8mb4
,我如何通过Django的迁移实现这一目标?
答案 0 :(得分:1)
Django不支持不同的字符集。你告诉它CharField
,它在内部使用Unicode,它在与RDBMS交谈时使用UTF-8,并且RDMBS的工作是将字符串转换为它用于存储的编码。
来自https://docs.djangoproject.com/en/1.10/ref/databases/#encoding:
Django假设所有数据库都使用UTF-8编码。
请注意,MySQL调用utf8mb4的东西是其他所有人(包括Django)调用UTF-8的东西,MySQL调用utf8的东西是UTF-8的一个子集,在其他地方不存在。
因此Django不支持对数据库字段编码的任何混乱。它希望您使用支持所有Unicode字符的编码创建数据库,并使RDBMS在与数据库客户端(即使用Django)通信时使用UTF-8。