升级数据库后(5.1到8.0),发现一个奇怪的问题,某些页面在升级前可以正常查询,但升级后什么也查不出来了,有时候还会查出错误的结果。经过一整天的排查,终于发现由两个原因导致,现记录如下。

第一是数据库的编码。使用中文关键字查不出结果(或结果错误),但是英文关键字可以正常查询。

还原数据库后默认的编码不是utf-8。执行下面命令可以查看当前数据库编码。

show variables like 'collation%';

或者

show variables like '%character%';

修改编码的语句

set character_set_client=utf8
set character_set_connection=utf8
set character_set_database=utf8
set character_set_results=utf8
set character_set_server=utf8

但是重启MySQL服务后,再查看数据库的编码,发现又变回了原来的。

原来使用命令行设置只是在当前会话中有效,当重启数据库后就会恢复默认编码。因此应该在MySQL的配置文件my.ini中设置。

低版本MySQL的my.ini在安装路径下可以找到,但是8.0的版本存放在C:\ProgramData\MySQL\MySQL Server 8.0下,这是一个隐藏的文件夹

打开my.ini后,加入如下配置

[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
collation_server=utf8_general_ci

修改后重启MySQL服务,发现编码已经成功修改

第二种原因是因为新版本MySQL的关键字导致

数据库的表中有个字段为virtual,在8.0中是虚拟列的关键字。

因此要在查询中加上``避免和关键字重复

其他的关键字Name、Class等没有问题。

MySQL编码不一致导致查询结果为空的更多相关文章

  1. MySQL字符集不一致导致查询SQL性能问题

    今天做了一个MySQL数据库中的SQL优化. 结论是关联字段字符集不同,导致索引不可用. 查询的SQL如下: select `Alias`.`Grade`, `Alias`.`id`, `Alias` ...

  2. MySQL字符集不一致导致性能下降25%,你敢信?

    故事是这样的: 我在对MySQL进行性能测试时,发现CPU使用率接近100%,其中80%us, 16%sys,3%wa,iostat发现磁盘iops2000以下,avgqu-sz不超过3,%util最 ...

  3. MySQL Sending data导致查询很慢的问题详细分析【转载】

    转自http://blog.csdn.net/yunhua_lee/article/details/8573621 [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的时 ...

  4. 实战:MySQL Sending data导致查询很慢的问题详细分析(转)

    这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有代表性,分享给大家作为新年礼物:) [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的 ...

  5. 实战:MySQL Sending data导致查询很慢的问题详细分析(转)

    出处:http://blog.csdn.net/yunhua_lee/article/details/8573621 这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有 ...

  6. MySQL Sending data导致查询很慢的问题详细分析

    这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有代表性,分享给大家作为新年礼物:) [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的 ...

  7. 0223实战:MySQL Sending data导致查询很慢的问题详细分析

    转自博客http://blog.csdn.net/yunhua_lee/article/details/8573621 [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据 ...

  8. centos6.5环境下的web项目mysql编码方式导致的中文乱码问题

    最近在centos6.5下部署web项目时网页出现中文乱码的问题,在排除掉php之后,把问题锁定在mysql的编码方式上. 解决方法如下: 首先进入mysql命令行,输入命令:SHOW VARIABL ...

  9. <<< html编码中js和html编码不一致导致乱码

    在html中,有时把编码设置成UTF-8之后,引入js,页面不会有乱码,但是有关js的东西会出现乱码, 大概问题就是js默认编码不是UTF-8, 解决办法:将js文件用记事本打开,在另存为,保存的时候 ...

随机推荐

  1. 2018总结-->2019新目标

    2018完成的事情: ①考到了驾照: ②刷了很多题,春季找到了实习,赚到了去日本旅游的经费和2019毕业租房的预算,最后签了offer: ③去了西安.天津.山西,看到了不一样的人和事: ④发了小论文, ...

  2. C# 6.0:String Interpolation

    在开发中经常需要对字符串进行格式化处理.我们一般使用String.Format()方法,它会将指定字符串中的每个格式项替换为相应对象的值的文本等效项.虽然这很普通,但有时会容易使人迷惑并造成错误.因为 ...

  3. listview--Java泛型应用之打造Android万能ViewHolder-超简洁写法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010785585/article/details/52808656 转载请注明出处:http:// ...

  4. WCF服务could not be activated

    The requested service, 'http://10.10.10.143/XmlEditorService/XmlEditorService.svc' could not be acti ...

  5. freemarker数据类型

    基本数据类型: 字符串 数字 布尔值 日期/时间 (日期,时间或日期时间) 数据结构: 哈希表 序列 注意一点:freemarker里面并没有对象这一数据类型!!!. 在freemarker中对象仅仅 ...

  6. Skyline TerraExplorer -二次开发- 加载外部数据的各种连接串

    Skyline 可以连接外部的数据源,包括SQL Server,Oracle ,excel,mySQL,SQlite,WFS....... 连接字符串如下:例如连接shp文件,为“FileName=C ...

  7. VM12中CentOS7以NAT方式连接网络的方法

    解决问题:centos网络连不上,连不上主机,ifconfig等命令不能用(配完有网了,安装上就好了)等问题 前提:安装vm12,centos7(最小安装)  注意:以下以192开头的,你都要替换成自 ...

  8. [java,2018-06-26] 扑克牌抽牌求和问题

    问题: 一副扑克牌,除去大小王后共52张牌,随机从中抽八张牌,问八张牌的和最有可能是多少? 分析: 这52张牌,其实就是数字 1 2 3 ...13, 每个数字出现4次.随机抽出8个数,问组成的和最有 ...

  9. DLC 基本定律与规则

    字母数字码 :除了数字以外,数字系统还需要处理数字以外的符号,如标点符号,控制命令等 最常见的是ASCII ASCII码是7位二进制码有128种组合,表示128个符号例如 二进制表示 十六进制表示 十 ...

  10. 2018-2019-2 20165205 《网络对抗技术》 Exp6 信息收集与漏洞扫描

    2018-2019-2 20165205 <网络对抗技术> Exp6 信息收集与漏洞扫描 实验目标 掌握信息收集的最基本技能与常用工具的方式 实验内容 各种搜索技巧的应用 DNS IP注册 ...