原因:
URL中没有指定数据库名称。debug时候不仅查询函数。
URL中添加useUnicode=true&characterEncoding=UTF-8的作用
首先查看数据库编码格式:
useUnicode=true 后面的配置 characterEncoding配置才能生效
characterEncoding=utf-8的配置的作用主要配置的是mysql服务端的编码,mysql驱动的代码中,会将将要发送mysql服务端的sql使用characterEncoding指定的值进行转码,然后将转码后的字节发送到mysql服务端
结论
-
useUnicode=true&characterEncoding=utf-8 主要配置的客户端发送数据到服务端时候,需要转换成什么样的编码发送给服务端
-
客户端接收到的数据不会出现乱码,有一个前提,就是数据库中的数据编码没有错误的情况下
建议
官方也建议我们characterEncoding这个值的配置尽量与mysql服务端的编码一致
如果不一致,会导致我们看到的结果出现乱码
例如: mysql服务端的编码为UTF-8 而这个时候我们配置了 useUnicode=true&characterEncoding=gbk
那么如果我们这时候插入了一条带有中文的数据,则此时mysql中的此中文数据为gbk的
然后我这时候查询这条数据,mysql会将gbk的数据返回给我们,但告诉我们说 这个是UTF-8编码的,这个时候mysql驱动包就会用UTF-8的编码去解码这段数据,这时候则会出现乱码