データベース・テーブルがロックされた原因の分析とデータベースの文字化けして解決
一、一度にお客様にプレゼンテーションを準備した問題を記録する
事故の背景:
したがって,機能開発が完了すると,開発者は現地で測視を行っても問題ない.開発したすべての機能モジュールを
事故の本当の原因:
ある同僚が
しかし、プロセスとローカル
最後に明らかになった本当の原因は、この同僚がまず
まず、無線ネットワークを使用して
そのため、同僚がインターネットに接続し、有線ネットワークを使用して
事故の解決方法:
まず、
その後、このプロセスを殺すか、
二、javawebプロジェクトをするとき、フロントで渡された中国語が最後にデータベースに挿入されると、いつも文字化けしてしまう.
ソリューション
A、Idea、eclipseを使用しても、自分のプロジェクトで使用されている文字セットが
B.
C、MySQLの文字セットを修正する.
①コマンドを使用してデータベースを変更する文字セットは
②
D、本人がインストール
実は
あなたがしなければならないのは、隠されたプロジェクトを表示して、このファイルを見つけて修正すればいいです(修正する前に、バックアップをしてください).
この
[client]
[mysql]
[mysqld]
E、
コンピュータ——右ボタン——管理——サービス、
F、再起動に成功した後、
重要なヒント:
中国語の文字化けし問題については、可能性と解決策を挙げただけだ.もちろん最も重要なのは、中国語の文字化けしの原因がたくさんあるに違いない.相応の解決策がある.プログラム猿として、googleを知っておくべきで、まさに自分で手を出して、衣食を豊かにします.
事故の背景:
したがって,機能開発が完了すると,開発者は現地で測視を行っても問題ない.開発したすべての機能モジュールを
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を知っておくべきで、まさに自分で手を出して、衣食を豊かにします.