解決django 向mysql中寫入中文字元出錯的問題
之前使用django+mysql建立的一個站點,發現向資料庫中寫入中文字元時總會報錯,嘗試了修改settings檔案和更改資料表的字符集後仍不起作用。最後發現,在更改mysql的字符集後,需要重建資料庫,才能起作用。
這裡完整記錄一下解決方案
首先更改mysql的字符集
ubuntu下找到/etc/mysql/my.cnf 在最後新增
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
用mysql -h localhost -u root -p 命令進入mysql 命令列
然後使用 show variables like 'character_set%'; 檢視字符集設定,看到 client server database 為utf8即為成功
但是我的django依然報錯,只能重建資料庫,如果資料庫檔案不多,重建資料庫的工作量其實非常小
首先建立新的資料庫,此時預設編碼格式就是utf8,已經支援中文、
然後修改settings.py中的database項的name為新的資料庫名
最後執行資料庫遷移即可,在包含manage.py資料夾目錄下
python manage.py makemigrations
python manage.py migrate
即可建立使用者表和modle中自定的表格,表結構與原來相同,將資料複製到新表即可
補充知識:解決django字符集 輸入漢字之後mysql資料庫報錯的問題【慎用】
解決思路:
啟動mysql資料庫 net start mysql
之後: mysql -u root -p
檢視資料庫字符集 show variables like ‘character%';
發現 character-set-server 和 character_set_database 的值為latin1
解決方案:
編輯檢視MySQL資料夾下的my.ini 配置檔案
在[mysqld]下新增 character-set-server=utf8
systemctl restart mysql 重啟 MySQL Server,再此檢視字符集變數,發現已經是utf8
drop database 【已經新增的資料庫】 並 create database 【新資料庫】
問題解決!
此方法簡單粗暴,慎用!資料庫裡面的檔案還要重寫,比較麻煩,不過可以在建立資料庫之後,新增一條資料,利用自定義的django圖形化介面,再新增資料也是可以的。
以上這篇解決django 向mysql中寫入中文字元出錯的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。