升级数据库后(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. JavaScript 集合对象

    1. 集合对象 1.1 Object 关于Object类型的创建和底层存储原理我在另一篇文章有说明: JavaScript 对象属性底层原理 我们知道了大多数情况下Object底层都是Hash结构,我 ...

  2. ES - 处理TooManyClause异常

    1.TooManyClause 我们在使用terms query.prefix query.fuzzy query.wildcard query.range query的时候,一不小心就会遇到TooM ...

  3. 【dbdiff】数据库比对工具安装

    安装git 忽略 安装visual c++组件(和mysql workbench需要的一样) https://www.microsoft.com/en-us/download/details.aspx ...

  4. 20175311 《Java程序设计》第三周学习总结

    20175311 2018-2019-2 <Java程序设计>第3周学习总结 教材学习内容总结 在蓝墨云中的教程里学习了如何安装IDEA,并且尝试了自己破解IDEA 主要在看书时,对jav ...

  5. 为什么PPIO要设计支付代理节点?

    PPIO是我和姚欣发起的去中心化存储项目(https://pp.io),这是为开发者提供的存储和分发网络平台,使得比云存储更廉价,更高速,更隐私.   我在设计PPIO的时候,设计了一个商业角色——支 ...

  6. Difference between hash() and id()

    https://stackoverflow.com/questions/34402522/difference-between-hash-and-id There are three concepts ...

  7. windows 服务的安装与卸载之bat脚本命令

    在windows 平台下,服务的安装与卸载可通过bat 脚本命令来完成,同时可编辑服务的描述,具体代码如下: 1.服务的安装DynamicPlanService_installer.bat: @ech ...

  8. CUDA编程模型——组织并行线程3 (2D grid 1D block)

    当使用一个包含一维块的二维网格时,每个线程都只关注一个数据元素并且网格的第二个维数等于ny,如下图所示: 这可以看作是含有二维块的二维网格的特殊情况,其中块儿的第二个维数是1.因此,从块儿和线程索引到 ...

  9. jQuery基础2

    一.使用jQuery完成省市二级联动 遍历函数:方式一:$.each(callback) 方式二:$.each(object,[callback]) 代码: <!DOCTYPE html> ...

  10. 在云主机上基于nginx部署基于Flask的网站服务器 (自己部署 )

    1.申请云主机 a.阿里云 (注意:阿里云的服务器需要手动添加安全规则使能80端口) b.腾讯云 2.把网站服务器程序拷贝到云主机 3.远程登录云主机 4.解压网站服务器程序 yum install ...