Help us understand the problem. What is going on with this article?

Railsアプリ起動中、テーブル処理等うまく動かなくなった時の対処方法(現在起動中の処理削除)

Railsのアプリを起動中、テーブルcreate処理でロックによるエラーなど、テーブルに関するエラー発生する時があります。

これは、複数同アプリの処理が起動中なのが原因な場合も考えられます。

その場合は、現在アプリで処理しているものを停止させる必要があります。

mysqlを起動する

以下のコマンドより、mysqlを起動します。

ターミナル
xxxxx@xxxxxMacBook-Air test-app % mysql -u root

アプリの処理一覧表示

次に以下のコマンドで現在起動している処理一覧を表示させます。

ターミナル
mysql> show processlist;

するとターミナルに以下の表示がされます。

ターミナル
+-----+------+-----------+----------------------+---------+------+-------+------------------+
| Id  | User | Host      | db                   | Command | Time | State | Info             |
+-----+------+-----------+----------------------+---------+------+-------+------------------+
| 388 | root | localhost | test_app_development | Sleep   |  382 |       | NULL             |
| 389 | root | localhost | test_app_development | Sleep   |  371 |       | NULL             |
| 390 | root | localhost | NULL                 | Query   |    0 | init  | show processlist |
+-----+------+-----------+----------------------+---------+------+-------+------------------+

Idと388と389がアプリ内で処理中のもの、390は先ほどコマンドにより処理一覧を表示させたものです。

アプリの処理しているものを削除

388を削除してみます。(以下同様に389も削除します)

ターミナル
mysql> kill 388;

すると、以下のように388が削除されました。
このように、アプリ内で起動中の処理を削除することで、解決することもあります。

ターミナル
+-----+------+-----------+----------------------+---------+------+-------+------------------+
| Id  | User | Host      | db                   | Command | Time | State | Info             |
+-----+------+-----------+----------------------+---------+------+-------+------------------+
| 389 | root | localhost | test_app_development | Sleep   |  371 |       | NULL             |
| 390 | root | localhost | NULL                 | Query   |    0 | init  | show processlist |
+-----+------+-----------+----------------------+---------+------+-------+------------------+

mysqlを閉じる

以下のコマンドでmysqlを閉じることができます。

ターミナル
mysql> exit
fugo0315
現在、今後のことを考え、プログラミングを勉強中(Rails、JavaScriptなど) 少しでも知識が身につくようにアウトプットしていければと思っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away