mysql编码无效_mysql的严格模式与无效字符编码问题
問題一般格式為:
1366 Incorrect string value: '' for column
1300 Invalid utf8 character string: ''
向mysql插入中文(東亞字符)出現(xiàn)問題一般是有字段不是utf8的問題。
向mysql插入腦殘文/火星文/特殊字符出現(xiàn)問題一般是有字段不是utf8mb4的問題,因為mysql的utf8并不完整,超過3個字節(jié)的編碼不支持。
我遇到了,不同服務(wù)器不同結(jié)果的現(xiàn)象。
一個mysql提示錯誤,一個提示警告。
研究一番,結(jié)果如下:
運維人員有一套對mysql的統(tǒng)一配置方案,采用寬松方式,不進(jìn)行嚴(yán)格處理,導(dǎo)致字符編碼問題被視為警告。
而我測試服務(wù)器安裝的mysql為默認(rèn)配置,采用嚴(yán)格表模式,有字符編碼問題視為錯誤。
select @@global.sql_mode;可查看這些設(shè)置。
set sql_mode='xxxx';可修改
導(dǎo)致這個問題并不是客戶端與服務(wù)器的連接不能傳輸這些字符(不然也不會有警告的情況了),而是傳輸模式中的字符集沒有協(xié)商好。
在客戶端的連接建立后,先執(zhí)行一個sql:set names utf8mb4,你就可以傳輸完整的字符編碼信息了。
作者:fyter
原文鏈接:https://www.cnblogs.com/fyter/p/mysql_unicode_utf8mb4_problem.html
總結(jié)
以上是生活随笔為你收集整理的mysql编码无效_mysql的严格模式与无效字符编码问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql grant 不想让用户看到
- 下一篇: mysql表jiayi_MySQL Me