zoukankan      html  css  js  c++  java
  • 解决MySQL5.7的表无法插入中文的问题

    环境及MySQL版本说明

      MySQL版本使用的是5.7,MySQL的环境是pull了一个docker镜像run起来的。

    问题描述

      在创建好的数据库中新建一张表emp2:

      然后试图往这张表中的title字段写入中文数据时发生了错误!

      具体的SQL语句如下:

    insert into emp2(num, title, url) values(1715046,'身高1米八','https://xxx.mp4'); 

      报错信息如下:

    1366 - Incorrect string value: 'xE8xBAxABxE9xABx98...' for column 'title' at row 1, Time: 0.001000s

      很显然,title字段写入了一个 Incorrect格式的数据!

    浅谈一下终端的保护措施

      如果读者把上面的SQL语句复制到终端去执行的话,终端会显示成这样:

      也就是说,终端会将非法的字符自动过滤掉,只留下“合法”的字符“1”——读者可以试试,如果将title字段插入的字符串都写成中文的话,将命令粘贴到终端后title最终会插入一个空字符串!

    表级别的修改

      查看一下这张表的 full columns:

      可以看到,varchar类型的title与url的collation属性为latin~

      按照下面的方式修改一下:

      然后再执行下面带中文的语句就没问题了:

    insert into emp2(num, title, url) values(1715046,'身高1米八','https://xxx.mp4'); 

    数据库级别的修改

      上面的方案只是修改了表的属性,试想一下如果我们在这个数据库中创建多张表,每张表都要改一下有些麻烦。

      从网上查一下修改配置文件的方案即可。

  • 相关阅读:
    Maven 基础
    Apache 免重启 刷新jsp
    【FeignClient证书】 忽略证书验证
    【转】MAC 配置ssh免密登录
    一次神奇的JVM调优
    Js 监听器
    Js 使用Map
    [leetcode]两数之和
    nginx在普通用户下的部署和安装
    oracle11G的linux下的离线安装教程
  • 原文地址:https://www.cnblogs.com/paulwhw/p/14872572.html
Copyright © 2011-2022 走看看