我有一个字符字段,它是utf8
我希望它是utf8mb4
,我如何通过Django的迁移来完成该操作?如何使用Django的迁移来更改字符集和排序规则?
1
A
回答
2
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字符的编码创建数据库,并且在与数据库客户端(即使用Django)通信时,RDBMS使用UTF-8。
+1
这并不回答有关迁移现有数据库的问题,也很大程度上不正确。 Django从来没有对utf8mb4的第一次订单支持,没有等同,跟踪器上仍然存在4年前的问题,但仍然存在关于Django无法处理的fk长度限制的问题。您可以通过专门为此目的的charset覆盖DATABASE设置中的连接编码。如果必须的话,你也可以传递连接初始化参数。我想我只会使用runPython。 –
相关问题
- 1. 更改mysql数据库的字符集和排序规则
- 2. MySQL字符集和排序规则
- 3. MySQL的Rails迁移排序规则
- 4. 更改默认排序规则/字符集
- 5. 在mysql中更改服务器和客户机排序规则和字符集
- 6. MySQL变更列排序规则和字符集信息模式
- 7. 更改数据库列的排序规则在laravel迁移中不起作用
- 8. 使用Hibernate方言设置表字符集/排序规则?
- 9. 字符集和数据库中的排序规则
- 10. MySql混合字符集和排序规则
- 11. 字符集和排序规则搞砸了吗?
- 12. 如何迁移cassandra集群列更改
- 13. phpmyadmin更改默认排序规则
- 14. Sql Server 2005 - 更改排序规则
- 15. 如何让Django South迁移max_length更改的字段?
- 16. 创建脚本来更改数据库的排序规则
- 17. 如何使用字段安排规则?
- 18. my.cnf中正确的MySQL字符集/排序规则变量?
- 19. 对特定规则的字符串集合进行排序
- 20. 如何更改数据库的排序规则?
- 21. 如何更改数据库,表格,列的排序规则?
- 22. 如何更改mysql中的db排序规则
- 23. 如何更改mysql中表格的排序规则?
- 24. 如何更改Mysql的连接排序规则
- 25. 如何更改MySQL列的排序规则类型?
- 26. SQL - 如何更改现有视图上的排序规则
- 27. 如何更改CRM 2011 SQL数据库的排序规则?
- 28. 如何更改数据库的默认排序规则?
- 29. 如何更改表格的默认排序规则?
- 30. 使用哪种SQL排序规则来处理特殊字符,如é?
你是指单独的字段还是所有字符字段? Django的文档提到[设置](https://docs.djangoproject.com/en/1.10/ref/databases/#connecting-to-the-database),但我认为这是db宽 – Sayse
@Sayse预先存在的字段。 –