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'); 

    数据库级别的修改

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

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

  • 相关阅读:
    jquery操作select
    EL表达式
    八大排序算法之希尔排序
    八大排序算法之堆排序
    八大排序算法之归并排序
    yield与send实现协程操作
    详解生成器、迭代器
    类相关知识
    python装饰器大详解
    详解python之反射机制
  • 原文地址:https://www.cnblogs.com/paulwhw/p/14872572.html
Copyright © 2011-2022 走看看