数据库模糊查询中文汉字失败和开启mysql日志

模糊查询数字和英文没问题,查询汉字查不到。

查询代码如下(添加不添加binary都查不到):
    @Test
    public void t5() throws SQLException {
        Connection c = dataSource.getConnection();
        String sql = "select * from base_dict where dict_type_name like ?";
        //String sql = "select * from base_dict where dict_type_name like binary?";
        PreparedStatement s = c.prepareStatement(sql);
        s.setObject(1, "%业%");
        ResultSet q = s.executeQuery();
        while (q.next()) {
            System.out.println(q.getObject(1) + ":" + q.getObject("dict_type_name"));
        }
    }
    
c3p0连接池地址是
jdbc:mysql://localhost:3306/hibernate1?userUnicode=true&charcterEncoding=UTF-8,其中&写成&也查不到数据



想查看mysql的日志,百度了一对方法都无效,修改my.ini都不会无法启动mysql。
终于在
找到了开启日志的方法:在my.ini设置general_log=on,
此时在workbench执行show variables like 'general_log%'可以看到设置成功
和日志所在文件。打开文件,发现查询语句是
select * from base_dict where dict_type_name like binary '%?%',
但是使用"%a%"查询,查询语句后面是where dict_type_name like binary '%a%',
这说明中文转码出现问题。在
https://blog.csdn.net/tjzhaomengyi/article/details/52924729找到答案,
workbench执行show variables like 'char%',发现character_set_server是latin1,
在my.ini的mysqld下面加上
character-set-server = utf8
collation-server = utf8_general_ci
后重启,character_set_server是变成utf8,查询成功。


SET GLOBAL general_log = 'On';        #设置日志开启
show variables like '%general%';    #查看日志是否开启和日志文件位置
删除日志文件后可能不会再生成,清空文件后可能不会再记录,关闭日志再开启即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值