データベース・テーブルがロックされた原因の分析とデータベースの文字化けして解決


一、一度にお客様にプレゼンテーションを準備した問題を記録する
事故の背景:
したがって,機能開発が完了すると,開発者は現地で測視を行っても問題ない.開発したすべての機能モジュールをdevブランチに統合し,パッケージ化し,プレゼンテーションのオンライン環境に公開した.関係者へのプレゼンテーション中に問題が発生しました.httpsを使用して、相手のインタフェースを呼び出してJsonデータを送信し、相手が検証を行い、すぐに検証の応答結果を返します.問題は、私たちがデータを送信するたびに成功したが、相手が送信したデータがDB( Oracle)に正常に挿入されていないことです.
事故の本当の原因:
ある同僚がdeleteを行った後、commitを提出しなかったからだ.時計がずっとロックされていて、他の人には使えません.
しかし、プロセスとローカルcommitを数回殺した後も、データを挿入することができず、DBがこの同僚にロックされたことを示唆した.
最後に明らかになった本当の原因は、この同僚がまず を使ってDBの操作を行い、当時commitが操作を提出しなかったことだ.それからまたインターネットの線を挿して仕事を続けて、問題はここに現れます.
まず、無線ネットワークを使用してDBを操作すると、Oracleはセッション(session)であることをデフォルト化します.開発者がDBを操作した後(commitなし)、また有線ネットワーク状態に切り替えた場合、この2つの状態の自機IPは異なる(興味のある方は無線と有線接続状態で同じパソコンのIPアドレスが同じかどうか試してみてください).Oracleは、最初のsessionが閉じていないと判断し、テーブルをロックし、今回のsessionセッションのコミットが終了するまで待機します.
そのため、同僚がインターネットに接続し、有線ネットワークを使用してcommitを行うと、操作に失敗することを示します.Oracleデータベースは、新しいsessionセッションだと考えています.最初のsessionセッションが終了しないと、DBがロックされている場合があります.
事故の解決方法:
まず、( Admin )を使用して、ロックされたテーブルとロックされたテーブルの開発者のワークナンバーをクエリーします.
その後、このプロセスを殺すか、DBの再起動を行えばよい.
二、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を知っておくべきで、まさに自分で手を出して、衣食を豊かにします.