1. 程式人生 > 資料庫 >解決django 向mysql中寫入中文字元出錯的問題

解決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中寫入中文字元出錯的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。