我有一個字符字段,它是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預先存在的字段。 –