以前、さくらインターネットで運営しているカブサポというサイトのプログラムを修正している際、PHPMyAdminで間違えて実行したSQL文が原因で、MySQLのサーバーを落としてしまいました。
#1203 MySQL サーバにログインできません
というメッセージが出て、実行後、10分程経過した辺りからPHPMyAdminへログイン出来なくなりました。また、サイト全体が、DB接続エラーが出て表示されなくなりました。
これを未然に防ぐ為に、暴走する可能性があるSQLをキャンセルする方法があります。
それは、
|
1 |
show processlist; |
です。PHPMyAdminのSQLタブへ、以下のように入力して実行すればOKです。
実行すると、現在処理しているSQLの一覧が出てくるので、キャンセルしたいSQLを選択して、停止を押せばOKです。
間違えたSQLを実行を停止させ、サーバー落ちを未然に防ぐには、これしかありません。実際にサーバー落ちしてしまった場合は、さくらインターネットのサポートへメール問い合わせして復旧してもらうしか方法はありません。一度落ちたら、放っておいても復旧することは無いのです。
phpMyAdminに入れない場合はコマンドラインから止める
SQLの実行が長引いてphpMyAdminが開けなくなっても、MySQLに直接接続できれば、同じように止められます。
ローカルのXAMPPから接続する場合は、XAMPPのコントロールパネルにある「Shell」を開きます。Windowsのコマンドプロンプトでは、mysqlコマンドが使えないことがあるためです。
|
1 |
mysql --host=<ホスト名> --user=<ユーザー名> --password=<パスワード> <DB名> |
接続を拒否された場合は、サーバーの管理画面で、MySQLへの接続を許可するIPアドレスに自分のIPを追加してください。
接続できたら、実行中のSQLを一覧にします。
|
1 |
show processlist; |
ロックを待っているSQLは、先に実行されているSQLが終わるまで進みません。原因になっているSQLの Id を指定して、強制終了します。
|
1 |
kill <Id>; |
作業が終わったら、接続を閉じます。
|
1 |
quit; |


