溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

django向mysql中寫入中文字符出錯怎么辦

發(fā)布時間:2020-07-23 16:50:33 來源:億速云 閱讀:222 作者:小豬 欄目:開發(fā)技術(shù)

小編這次要給大家分享的是django向mysql中寫入中文字符出錯怎么辦,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

之前使用django+mysql建立的一個站點(diǎn),發(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 命令進(jìn)入mysql 命令行

然后使用 show variables like 'character_set%'; 查看字符集設(shè)置,看到 client server database 為utf8即為成功

但是我的django依然報錯,只能重建數(shù)據(jù)庫,如果數(shù)據(jù)庫文件不多,重建數(shù)據(jù)庫的工作量其實(shí)非常小

首先建立新的數(shù)據(jù)庫,此時默認(rèn)編碼格式就是utf8,已經(jīng)支持中文、

然后修改settings.py中的database項(xiàng)的name為新的數(shù)據(jù)庫名

最后執(zhí)行數(shù)據(jù)庫遷移即可,在包含manage.py文件夾目錄下

python manage.py makemigrations

python manage.py migrate

即可創(chuàng)建用戶表和modle中自定的表格,表結(jié)構(gòu)與原來相同,將數(shù)據(jù)復(fù)制到新表即可

補(bǔ)充知識:解決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ù)也是可以的。

看完這篇關(guān)于django向mysql中寫入中文字符出錯怎么辦的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI