解決django 向mysql中寫(xiě)入中文字符出錯(cuò)的問(wèn)題
之前使用django+mysql建立的一個(gè)站點(diǎn),發(fā)現(xiàn)向數(shù)據(jù)庫(kù)中寫(xiě)入中文字符時(shí)總會(huì)報(bào)錯(cuò),嘗試了修改settings文件和更改數(shù)據(jù)表的字符集后仍不起作用。最后發(fā)現(xiàn),在更改mysql的字符集后,需要重建數(shù)據(jù)庫(kù),才能起作用。
這里完整記錄一下解決方案
首先更改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 命令進(jìn)入mysql 命令行
然后使用 show variables like ’character_set%’; 查看字符集設(shè)置,看到 client server database 為utf8即為成功
但是我的django依然報(bào)錯(cuò),只能重建數(shù)據(jù)庫(kù),如果數(shù)據(jù)庫(kù)文件不多,重建數(shù)據(jù)庫(kù)的工作量其實(shí)非常小
首先建立新的數(shù)據(jù)庫(kù),此時(shí)默認(rèn)編碼格式就是utf8,已經(jīng)支持中文、
然后修改settings.py中的database項(xiàng)的name為新的數(shù)據(jù)庫(kù)名
最后執(zhí)行數(shù)據(jù)庫(kù)遷移即可,在包含manage.py文件夾目錄下
python manage.py makemigrations
python manage.py migrate
即可創(chuàng)建用戶表和modle中自定的表格,表結(jié)構(gòu)與原來(lái)相同,將數(shù)據(jù)復(fù)制到新表即可
補(bǔ)充知識(shí):解決django字符集 輸入漢字之后mysql數(shù)據(jù)庫(kù)報(bào)錯(cuò)的問(wèn)題【慎用】
解決思路:
啟動(dòng)mysql數(shù)據(jù)庫(kù) net start mysql
之后: mysql -u root -p
查看數(shù)據(jù)庫(kù)字符集 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ù)庫(kù)】 并 create database 【新數(shù)據(jù)庫(kù)】
問(wèn)題解決!
此方法簡(jiǎn)單粗暴,慎用!數(shù)據(jù)庫(kù)里面的文件還要重寫(xiě),比較麻煩,不過(guò)可以在創(chuàng)建數(shù)據(jù)庫(kù)之后,添加一條數(shù)據(jù),利用自定義的django圖形化界面,再添加數(shù)據(jù)也是可以的。
以上這篇解決django 向mysql中寫(xiě)入中文字符出錯(cuò)的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Mybatis批量插入返回插入成功后的主鍵id操作2. MySql使用mysqldump 導(dǎo)入與導(dǎo)出方法總結(jié)3. MariaDB中1045權(quán)限錯(cuò)誤導(dǎo)致拒絕用戶訪問(wèn)的錯(cuò)誤解決方法4. Microsoft Office Access刪除表記錄的方法5. 如何用mysqldump進(jìn)行全量和時(shí)間點(diǎn)備份6. navicat for mysql導(dǎo)出數(shù)據(jù)庫(kù)的方法7. Row_number()函數(shù)用法小結(jié)8. DB2中實(shí)現(xiàn)Oracle的相關(guān)功能9. DB2 V9.5工作負(fù)載管理之閾值(THRESHOLD)10. 安裝配置mysql及Navicat prenium的詳細(xì)流程
