レンタルサーバーのMySQLのロックを解除してほしいという依頼を受け対応したので備忘録として残します。
Xサーバーのレンタルサーバー上のMySQLで
複数のテーブルを紐づけたUPDATE文を実行したところ、
結果が返ってこず、対象のテーブルのデータを更新しようとすると
1 |
#1205 - ロック待ちがタイムアウトしました。トランザクションを再試行してください。 |
というエラーで更新できなくなったとのこと。
また、レンタルサーバーのMySQLを再起動する方法は用意されていないとのことで、ロックを解除する必要があります。
以下の手順でロックを解除しました。
1.サーバーにSSHで接続する
専用サーバーやVPSでなくてもSSH接続できるレンタルサーバーが増えています。
今回のサーバーは「Xサーバー」のレンタルサーバーですが、SSH接続が用意されていました。
2.コマンドでMySQLにログインする
1 |
> mysql -u ユーザー名 -p |
でパスワードを入力してログインします。
対象のデータベースだけの権限を持っているユーザーでOKです。
3.データベースを選択する
1 |
> use データベース名; |
4.プロセス一覧を表示する
1 |
> show processlist; |
実行中のプロセスが一覧で表示されますので、
ロックの原因となっているSQLの「Id」欄をメモします。
5.プロセスをkillする
1 |
> kill メモしたId; |
以上です。
その後、適切にインデックスを追加したことで
ロックすることもなくなりました。