解決django 向mysql中寫入中文字符出錯的問題
之前使用django+mysql建立的一個站點,發(fā)現(xiàn)向數(shù)據(jù)庫中寫入中文字符時總會報錯,嘗試了修改settings文件和更改數(shù)據(jù)表的字符集后仍不起作用。最后發(fā)現(xiàn),在更改mysql的字符集后,需要重建數(shù)據(jù)庫,才能起作用。
這里完整記錄一下解決方案
首先更改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%'; 查看字符集設(shè)置,看到 client server database 為utf8即為成功
但是我的django依然報錯,只能重建數(shù)據(jù)庫,如果數(shù)據(jù)庫文件不多,重建數(shù)據(jù)庫的工作量其實非常小
首先建立新的數(shù)據(jù)庫,此時默認編碼格式就是utf8,已經(jīng)支持中文、
然后修改settings.py中的database項的name為新的數(shù)據(jù)庫名
最后執(zhí)行數(shù)據(jù)庫遷移即可,在包含manage.py文件夾目錄下
python manage.py makemigrations
python manage.py migrate
即可創(chuàng)建用戶表和modle中自定的表格,表結(jié)構(gòu)與原來相同,將數(shù)據(jù)復制到新表即可
補充知識:解決django字符集 輸入漢字之后mysql數(shù)據(jù)庫報錯的問題【慎用】
解決思路:
啟動mysql數(shù)據(jù)庫 net start mysql
之后: mysql -u root -p
查看數(shù)據(jù)庫字符集 show variables like ‘character%';
發(fā)現(xiàn) character-set-server 和 character_set_database 的值為latin1
解決方案:
編輯查看MySQL文件夾下的my.ini 配置文件
在[mysqld]下添加 character-set-server=utf8
systemctl restart mysql 重啟 MySQL Server,再此查看字符集變量,發(fā)現(xiàn)已經(jīng)是utf8
drop database 【已經(jīng)添加的數(shù)據(jù)庫】 并 create database 【新數(shù)據(jù)庫】
問題解決!
此方法簡單粗暴,慎用!數(shù)據(jù)庫里面的文件還要重寫,比較麻煩,不過可以在創(chuàng)建數(shù)據(jù)庫之后,添加一條數(shù)據(jù),利用自定義的django圖形化界面,再添加數(shù)據(jù)也是可以的。
以上這篇解決django 向mysql中寫入中文字符出錯的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Windows下的Python 3.6.1的下載與安裝圖文詳解(適合32位和64位)
這篇文章主要介紹了Windows下的Python 3.6.1的下載與安裝圖文詳解(適合32位和64位),需要的朋友可以參考下2018-02-02利用python、tensorflow、opencv、pyqt5實現(xiàn)人臉實時簽到系統(tǒng)
這篇文章主要介紹了利用python、tensorflow、opencv、pyqt5實現(xiàn)人臉實時簽到系統(tǒng),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09Python網(wǎng)絡(luò)爬蟲出現(xiàn)亂碼問題的解決方法
這篇文章主要為大家詳細介紹了Python網(wǎng)絡(luò)爬蟲出現(xiàn)亂碼問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01python中__slots__節(jié)約內(nèi)存的具體做法
在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python中__slots__節(jié)約內(nèi)存的具體做法,有需要的朋友們可以跟著學習參考下。2021-07-07Pandas去除重復項函數(shù)詳解drop_duplicates()
這篇文章主要介紹了Pandas去除重復項函數(shù)drop_duplicates(),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02