前言
我也不知道該怎么起標題了。這個標題大概就是我搜索錯誤是用到的關鍵詞
最近在寫 JSP。 昨天用到了數據庫,但是遇到了一個超級崩潰的錯誤。
我的 SQL 語句中 如果出現了中文,在數據庫中執行的時候 中文就變成了?
錯誤的樣子:
我執行這個
select * from book where author like '%金庸%'
在數據庫執行日志看就是
select * from book where author like '%??%'
這種錯誤
當時大概思路是
先查了一遍我的數據庫和表以及字段的數據類型,沒發現問題
在請求數據查詢的地方,直接寫了一條固定的 SQL 語句。發現問題是出現在這里
然后嘗試各種解決方式 無效。 偶然想到了查詢數據庫日志,嘗試,查到了日志可是沒解決問題思路
早上起來突然想到。會不會是整個 MySQL 的編碼方式于是在網上找了篇參考文章 來自CSDN 的 參考文章 查看修改mysql編碼方式
整個過程
查數據庫的執行日志
查詢數據庫實時執行 參考自 CSDN 博主 春夏秋冬又一年
1. 進入 mysql, 修改設置:
image
2. 查看 mysql 的日志文件所在位置:
image
3. 在終端 用 tail -f 命令 打開該日志文件:
tail -f /usr/local/var/mysql/日志文件名.log
如果執行不了, 可能會需要權限, 在前面添加 sudo 即可
(用 vim 打開的不是實時的, 需要手動翻頁查看)
4. 接下來,再進行 mysql 相關的查詢等操作時,便可以在終端打開的這個文件里實時看到每一步的操作了
比如:
image
在一篇文章中我發現了字符集可能導致的問題
于是檢查了一下字符集。
檢查字符集的方式
mysql> show variables like 'character%';
image.png
可以看到我的 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。
image.png
完美!!!