給表中某條記錄添加中文描述是報錯:django.db.utils.InternalError: 1366…
原因:該表是通過Django model的方式創建的,查閱相關文檔(可能不全面)發現Django makemigration 在創建表的時候沒有可以指定charset的方式,所以表全部默認charset Latin1(encoding:cp 1252 West, collation: latin1_swedish_ci)。
解決方法:修改該字段的編碼格式。
先通過:
SHOW VARIABLES LIKE ‘character%’;
SHOW VARIABLES LIKE ‘collation_%’;
查看數據庫相關變量是否和上面類似,再進行修改。
相關信息:參考https://blog.csdn.net/haiross/article/details/51273593
- 方法:
alter table table-name convert to character set utf8mb4;
這條語句直接將整張表的字符集設置爲utfmb4,不需要再對單個字段進行修改。
注意:上面命令中使用的是convert !!!
而非添加set(如果使用set,新添加字段時使用你設置的字符集,這沒毛病。但是對於已存在的字段並不做任何修改,這時候你可能還需要單獨修改某一字段。所以不如直接用convert一步到位的好)。
單獨修改某一字段的數據集時使用:alter table table_name modify column_name longtext character set utf8mb4;
注意+1: 這在表數據量不大的情況下推薦使用。如果數量級非常大請謹慎使用!