• 解决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'); 

    数据库级别的修改

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

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

  • 相关阅读:
    Java正则表达式, 提取双引号中间的部分
    如何快速找到未知长度单链表的中心点的值
    西格玛
    对数
    jquery显示隐藏toggle
    JavaScript:改变li前缀图片和样式
    jquery点击改变图片src源码并toggle
    jquery点击改变class并toggle
    linux下合并两个文件夹
    编译安装httpd
  • 原文地址:https://www.cnblogs.com/paulwhw/p/14872572.html
Copyright © 2020-2023  润新知