首页 > 数据库 >Mysql8.0.32 union all创建视图无法使用中文模糊查询的坑

Mysql8.0.32 union all创建视图无法使用中文模糊查询的坑

时间:2023-06-14 19:12:23浏览次数:58  
标签:utf8 union 32 数据库 character 视图 Mysql8.0 mysql innodb

Mysql8.0.32 union all创建视图无法使用中文模糊查询的坑


摘要

本周研发同事反馈现场有一个问题. 
客户使用mysql的数据库(Windows平台)
然后在多表union all 创建的视图内执行查询
如果使用中文模拟查询, 就没结果返回. 

大部分csdn的搜索结构都是说需要在my.ini里面增加部分默认字符集的配置.
但是反馈并没有解决. 

周三下午实在有点被问烦了. 
然后跟公司内数据库专家方神一起进行一下验证发现是mysql的一个坑.

csdn要求添加的配置

在mysql中的my.ini 文件中

在[mysql]下面添加: default-character-set=utf8
在[client]下面添加:default-character-set=utf8
在[mysqld]下面添加:character-set-server=utf8

来源:https://blog.csdn.net/m0_37468234/article/details/80247910

结论是: 然并卵

尝试验证

客户那边给的配置文件里面看到版本是 Mysql8.0.32
所以猜测是不是数据库有bug (只要是人写的就有bug)
但是有不太确认, 只能够进行相关的测试验证. 
主要的办法就是下载 安装 测试 

下载地址: https://dev.mysql.com/downloads/
下载的文件主要有两个:
mysql-8.0.32-winx64.zip
mysql-8.0.33-winx64.zip

Windows 平台快速创建

配置文件:
[mysqld]
datadir=C:\mysql\data
max_allowed_packet = 1G
innodb_log_file_size = 512M
innodb_log_buffer_size = 512M
innodb_file_per_table = 1
innodb_buffer_pool_size=8G
innodb_flush_log_at_trx_commit=0
#innodb_file_format=barracuda
max_connections=2000
lower-case-table-names=1
innodb_strict_mode = 0
character_set_server=utf8
secure_file_priv = 
#character_set_results=utf8
default-time-zone='+08:00'
expire_logs_days = 1
transaction-isolation = READ-COMMITTED
default_authentication_plugin=mysql_native_password
#skip-grant-tables
skip-log-bin 
[mysql]
prompt="\\u@\\h : \\d \\r:\\m:\\s>"
default-character-set=utf8

初始化以及启动服务

mysqld --defaults-file="c:\mysql\my.ini" --initialize

mysqld --remove  MySQL
mysqld --install  MySQL --defaults-file="D:\mysql\my.ini"
net start MySQL

注意默认密码在 c:\mysql\data\computername.err 里面.

SQL验证

使用navicat 连接数据库, 设置默认密码后进行如下处理

创建数据库 可以还是用GUI方式创建, 注意我这边是utf8 的字符集

测试SQL主要如下:
create table jinanxiaolaohu1 (col1 varchar(2000));
create table jinanxiaolaohu2 (col2 varchar(2000));

insert into jinanxiaolaohu1 (col1) values ("济南小老虎中文English123402");
insert into jinanxiaolaohu2 (col2) values ("济南小老虎测试中文English123401");
create view jinanxiaolaohu3  as select col1 from jinanxiaolaohu1  union all select col2 from jinanxiaolaohu2 ;

# 这个查询结果 8.0.32 就反馈为空. 
select * from jinanxiaolaohu3  where col1 like '济南小老虎%' ;

升级Mysql8.0.33进行再次验证

# 注意如果是生产环境务必要进行一下数据库备份. 
# 我这边是测试的 就无所谓了. 
关闭服务
net start MySQL
将mysql8.0.33的文件覆盖到 mysql8.0.22 的目录
执行
net start MySQL

同样的执行SQL
select * from jinanxiaolaohu3  where col1 like '济南小老虎%' ;
发现就可以查询出结果来了

产品已有的数据库版本验证

我们这边使用的是Mysql8.0.26 docker版本
也进行了一下验证也没问题. 
特意尝试了下之前写blog的Mysql8.0.31也没有这个问题.

客户现场中头彩.. 
建议升级版本. 
能用商业数据库使用商业数据库. 

标签:utf8,union,32,数据库,character,视图,Mysql8.0,mysql,innodb
From: https://www.cnblogs.com/jinanxiaolaohu/p/17481135.html

相关文章

  • ESP32-CAM开发板WiFi连接
    ESP32连接wifi这里我们可以参考官方文档所提供的接口函数,如下而对应我们常用的esp连接网络,我们只需要用好官方提供的下面这个函数就好了defdo_connect():importnetwork#引入所需要的模块wlan=network.WLAN(network.STA_IF)#设置模式为APwlan.active(......
  • ESP32-CAM开发板刷固件时遇到问题与解决方法
    ESP32-CAM开发板刷固件时遇到的问题通过ThonnyIDE给ESP32-CAM刷入micorpython固件时,我遇到三个问题,给大家做个参照。1从MicroPython官网下载的固件没有Camera库,所以经过多次努力,找到了一个国外的开发者前辈,他给MicroPython中添加了Camera摄像头库。2ESP32-CAM有专门的......
  • STM32之中断简介
    一、F407在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。其中系统异常10个,外部中断82个。除了个别异常的优先级被定死外,其他异常的优先级都是可以编程的。结构体:IRQn_Type包含全部异常声明。二、嵌套向量中断控制器NVIC,在STM32中NVIV是Cortex-M4的一......
  • W25Q32-2023-06-14
    1、W25Q内部结构图截取自《[9-3]53W25QXX介绍》视频13:44的地方,对比起来,页、扇区和块之间的关系相比“W25Q32共32M-bit(4MB字节),它可划分为64块,每块64KB,每块又可划分为16个扇区,每个扇区4KB,每个扇区又可划分16页,每页256B”这样的描述更为清晰,而手册里结构图的问题在于普遍都是采用......
  • java开发操作系统内核:由实模式进入保护模式之32位寻址
    从时模式到保护模式,是计算法技术跨时代的发展。大家想想笨拙的Dos界面,黑底白字的那种冷漠界面到win95各种色彩斑斓的窗口,两者之间的区别其实就是实模式和保护模式的天壤之别。保护模式中,最重要的一个概念莫过于”保护”二字,有了“保护”功能后,CPU为软件提供了很多的功能,当然也有了......
  • 查询配置数据库 视图 响应时长优化问题
    问题: 主数据库为oracle,配置数据库SqlServer,有个子页面查询SqlServer数据库视图,需要二十多秒才给响应处理方案:把查询分页数据的SQL 和查询分页计数的SQL异步处理原代码:page=iMpckService.getsympzkcSqlserver(params);//查询SQLserver数据库total=iMp......
  • STM32CubeIDE卸载插件/卸载汉化
    汉化时下载了所有的内容,打开就提示错误,大概是什么不能类转化查了下,说是不能全部都装,只装两个即可,然后就要卸载其他的话不多说直接上图哈哈哈,没有报错界面了,我找找,重启软件出来了然后 选中卸载项就能卸载了 可以用文件夹中选文件的快捷键哦 ......
  • STM32cubeIDE CAN回环模式
    配置如下 经过分频,选择位段1和位段2之后波特率回自己计算CAN总线的频率实在PCLK上CAN是有接收和发送中断的但是需要在STM32CUBEIDE中自己加入滤波器。voidCAN_Config(void){CAN_FilterTypeDefsFilterConfig;/*配置CAN过滤�??*/sFilterConfig.FilterBan......
  • CF 932 E. Team Work 第二类斯特林数总结
    求解\(\sum_{x=1}^nC(n,x)x^k,n\le10^9,k\le5000\)第二类斯特林数n个不同的小球放入k个相同的盒子的方案数\(S(n,k)\),盒子非空显然有\(S(n,k)=S(n-1,k-1)+k\cdotS(n-1,k)\)注意边界\(S(n,0)=[n==0],S(n,1)=1\)考虑到\(x^k\)可以利用第二类斯特林数化简\(x^k=\sum_{i=1}^{x......
  • mysql 8.0.32 视图中文无法过滤
    mysql8.0.32视图中采用unionall或union合并获取结果时,含有中文的字段过滤失效会提示类似如下的信息Warning|1300|Cannotconvertstring'\xE5\xAE\xA2\xE6\x88\xB7...'fromutf8mb4tobinary这是此版本bug.在对派生表使用where条件时,如果对应值超过128(ascii值),对......