前言
我也不知道该怎么起标题了。这个标题大概就是我搜索错误是用到的关键词
最近在写 JSP。 昨天用到了数据库,但是遇到了一个超级崩溃的错误。
我的 SQL 语句中 如果出现了中文,在数据库中执行的时候 中文就变成了?
错误的样子:
我执行这个
select * from book where author like '%金庸%'
在数据库执行日志看就是
select * from book where author like '%??%'
这种错误
当时大概思路是
先查了一遍我的数据库和表以及字段的数据类型,没发现问题
在请求数据查询的地方,直接写了一条固定的 SQL 语句。发现问题是出现在这里
然后尝试各种解决方式 无效。 偶然想到了查询数据库日志,尝试,查到了日志可是没解决问题思路
早上起来突然想到。会不会是整个 MySQL 的编码方式于是在网上找了篇参考文章 来自CSDN 的 参考文章 查看修改mysql编码方式
整个过程
查数据库的执行日志
查询数据库实时执行 参考自 CSDN 博主 春夏秋冬又一年
1. 进入 mysql, 修改设置:
2. 查看 mysql 的日志文件所在位置:
3. 在终端 用 tail -f 命令 打开该日志文件:
tail -f /usr/local/var/mysql/日志文件名.log
如果执行不了, 可能会需要权限, 在前面添加 sudo 即可
(用 vim 打开的不是实时的, 需要手动翻页查看)
4. 接下来,再进行 mysql 相关的查询等操作时,便可以在终端打开的这个文件里实时看到每一步的操作了
比如:
在一篇文章中我发现了字符集可能导致的问题
于是检查了一下字符集。
检查字符集的方式
mysql> show variables like 'character%';
可以看到我的 character_set_server value 值为 latin1
问题应该是在这里 尝试把它改为 utf8
有方法说是用
mysql> set names utf8;
我使用后无效. 于是看到网上说改配置文件,因为我是在官网下载 MySQL mac 版,我并没有找到 配置文件, 也没有找到 my-default.cnf
修改期间必须关闭mysql!!!
(这些内容参考子 博主 涂山千风)
- 我们要在/etc下新建my.cnf
$ cd /etc $ sudo vim my.cnf
输入: 内容见此链接 (这里边的内容目测就是 配置文件 )改character_set_server=utf8;- 保存并退出
重启mysql。
完美!!!