您好,登錄后才能下訂單哦!
小編這次要給大家分享的是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中寫入中文字符出錯怎么辦的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。