search
LoginSignup
0

posted at

updated at

Concrete CMS V9 のタスクを強制的に終了させる方法 (v9.2.0 未満)

Concrete CMS V9 から、バッチ処理をバックグラウンドで行う「タスク」という機能が追加されました。

しかし、このタスク機能、2023年初頭にリリース予定の V9.2.0 まで、エラーなどでストップしてしまった実行中のタスクを途中終了させるような機能がついていません。

MySQL テーブルの関係レコードを削除することで、強制終了させることができます。

mysql -h [DBホスト] -u [DBユーザー] --password="[DBパスワード]" [DB名] -e "delete from MessengerProcesses; delete from MessengerTaskProcesses;delete from MessengerMessages;"

つまり

MySQLデータベースの以下のテーブルにタスクの実行情報(プロセス)が入っているので、それらのテーブルの中身を削除します。

MessengerProcesses
MessengerTaskProcesses
MessengerMessages

a foreign key constraint エラーが出た時の対処法

タスク情報を削除する時に以下の様なエラーが発生する場合があります。

ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`[データベース名]`.`MessengerTaskProcesses`, CONSTRAINT `FK_BE77DC6FBF396750` FOREIGN KEY (`id`) REFERENCES `[データベース名]`.`MessengerProcesses` (`id`))
Query OK, 0 rows affected (0.011 sec)

FOREIGN KEY が付与され、うまく削除できないことが原因です。
そんな時は、FOREIGN KEY チェックを一時的に無効にして実施します。

MySQL ログイン後の場合

set foreign_key_checks = 0;
truncate MessengerTaskProcesses; truncate MessengerProcesses; truncate MessengerMessages;
set foreign_key_checks = 1;

MySQL コマンドで直接実行する場合

mysql -h [DBホスト] -u [DBユーザー] --password="[DBパスワード]" [DB名] -e "set foreign_key_checks = 0;delete from MessengerProcesses; delete from MessengerTaskProcesses;delete from MessengerMessages;set foreign_key_checks = 1;"

参考

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
What you can do with signing up
0