zoukankan      html  css  js  c++  java
  • mysql的严格模式与无效字符编码问题

    问题一般格式为:

    1366 Incorrect string value: '' for column

    1300 Invalid utf8 character string: ''

    向mysql插入中文(东亚字符)出现问题一般是有字段不是utf8的问题。

    向mysql插入脑残文/火星文/特殊字符出现问题一般是有字段不是utf8mb4的问题,因为mysql的utf8并不完整,超过3个字节的编码不支持。

    我遇到了,不同服务器不同结果的现象。

    一个mysql提示错误,一个提示警告。

    研究一番,结果如下:

    运维人员有一套对mysql的统一配置方案,采用宽松方式,不进行严格处理,导致字符编码问题被视为警告。

    而我测试服务器安装的mysql为默认配置,采用严格表模式,有字符编码问题视为错误。

    select @@global.sql_mode;可查看这些设置。

    set sql_mode='xxxx';可修改

    导致这个问题并不是客户端与服务器的连接不能传输这些字符(不然也不会有警告的情况了),而是传输模式中的字符集没有协商好。

    在客户端的连接建立后,先执行一个sql:set names utf8mb4,你就可以传输完整的字符编码信息了。

  • 相关阅读:
    jmeter中生成不重复的序列
    jmeter返回解密
    jmeter请求加密
    查看链接设备和安装软件
    jmeter_事物控制器_Transaction Controller
    jmeter返回中提取匹配多个参数($1$$2$)
    jmeter官方文档地址
    DEDECMS会员注册如何配置邮箱发送邮件功能
    颤抖吧,Css3
    html embed用法
  • 原文地址:https://www.cnblogs.com/fyter/p/mysql_unicode_utf8mb4_problem.html
Copyright © 2011-2022 走看看