1、記錄一次準備給客戶預演示出現的問題java
事故的背景:當因此功能開發完成後,開發人員在本地進行了測視已經沒問題了。就把全部開發的功能模塊合併到
dev
分支,進行打包,發佈到預演示的線上環境。當在給相關人員進行演示的時候,出現了問題。mysql咱們使用
https
調用對方的接口發送Json
數據,對方進行校驗立刻返回校驗的響應結果。問題出如今咱們每次發送數據都是成功的,可是對方發送回來的數據,一直不能正常插入DB(使用的是 Oracle)
。web事故的真正緣由:sql
由於有個同事在進行了
delete
後沒有進行commit
提交。致使表一直被鎖住,不能被其餘人使用。數據庫可是殺死進程和本地
commit
幾回後,依舊沒法插入數據,提示仍是DB
被這個同事鎖住。網絡最後查出的真正緣由是,這個同事首先使用了
無線網絡
進行了DB
的操做,當時並無commit
提交操做。然後又插上網線繼續工做,問題就出如今這裏。session首先,當咱們使用無線網絡操做
DB
時,Oracle
會默認這是一次會話(session)
,當開發人員對DB
進行操做後(沒有commit
),又切換到了有線網絡狀態下,而這 2 種狀態下的本機IP
是不同的(有興趣的朋友能夠試試使用無線和有線鏈接狀態下,同一臺電腦的IP
地址是否同樣)。eclipse
Oracle
會認爲第一次session
沒有關閉,會將表鎖住,等待此次session
會話的提交直到結束。google因此當同事再鏈接上網線,使用有線網絡進行
commit
時候會提示操做失敗。由於Oracle
數據庫認爲這又是一次新的session
會話。而第一次的session
會話並無結束,就會致使出現了DB
一直被鎖的狀況。編碼事故的解決辦法:
首先使用語句查詢
(只有 Admin 用戶才能夠)
出被鎖住的表和鎖表的開發人員的工號。而後殺死這個進程或者進行
DB
重啓便可。
2、在作 javaweb 項目的時,前臺傳遞的中文最後插入數據庫的時候老是出現亂碼現象。
解決方案
A、不論是使用 Idea、eclipse,肯定本身的項目所使用的字符集是 UTF-8
。
B、查看 MySQL
的字符集是不是 UTF-8
。打開 Dos
窗口,輸入:mysql -u root -p
, 在輸入密碼便可進入 數據庫。進入數據庫輸入命令 :show variables like 'character%';
查看數據庫的字符集,以下圖:
MySQL
的默認編碼是 Latin1
,不支持中文,要支持中文須要把數據庫的默認編碼修改成 UTF-8
。
C、修改 MySQL 的字符集。
① 使用命令修改數據庫的字符集爲 UTF-8
。(因爲小編使用命令設置後依舊不能插入,不在此贅述)
② 修改 MySQL
的配置文件。(修改後,成功插入中文,在此介紹這種方法)
D、本人安裝的 MySQL
版本是 5.7.25,安裝好 MySQL
後就要對字符集進行修改了,網上的大部分說法是去 安裝目錄找一個 my-default.ini
文件,而後重命名爲 my.ini
,再對其進修改字符集便可,可是 在 MySQL
的安裝目錄下竟然沒有這個文件。
其實 MySQL
的 5.7.25 的 my.ini
文件不在安裝目錄下,若是是默認安裝 MySQL
的,那麼它的 my.ini
文 件在隱藏文件夾 C:\ProgramData\MySQL\MySQL Server 5.7
下。
你須要作的就是顯示隱藏的的項目,找到這個文件修改便可(修改前,請先作備份)。
對該 my.ini
文件下進行配置修改 :
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_unicode_ci
init_connect=’SET NAMES utf8’
E、修改 my.ini
文件後,保存,再重啓 MySQL
服務。
計算機——右鍵——管理——服務,找到 MySQL57
,對其右鍵中止,再啓動便可
F、重啓成功後,進入 MySQL
數據庫,輸入show variables like 'character%';
顯示數據庫字符集已修改 成功。
重要提示:對於中文亂碼問題,小編只是列舉了一種可能性,以及解決方案。固然最重要的是確定還有不少緣由致使中文亂碼,都會有相應的解決方案。做爲程序猿,應當懂得 google,正所謂本身動手,豐衣足食。