0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-11-21

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?