モジュール情報の削除

drupal 6.x からdrupal 7.xにアップグレードしたため、drupalで使用しているデータベース内には未だにdrupal 6.xでアンインストールを行わなかったもしくは行えていなかったモジュールの情報が残っています。
そのため、新しいモジュールをインストールする際、データベースのアップデート工程で必ずWarrningメッセージが表示される状態でした。

そのメッセージが「The following module is missing from the file system...」です。
全部で20件ほどありました。
これでは肝心のメッセージを見落としてしまいます。

詳細な対処方法は「How to fix "The following module is missing from the file system..." warning messages」に記載があります。
不要な情報をデータベースから消去すれば問題は解決しますので方法はいろいろとあります。

この根本的な原因を排除するためのモジュールが、以下のモジュールです。

  1. Module Missing Message Fixer
  2. Missing Module

どちらも同種のモジュールになりますが、drushコマンドが使用できるのであれば、2番のMissing Moduleが簡単です。

以下、drushコマンドを利用した方法です。

ダウンロード

$ cd drupal_root_dir
$ drush dl missing_module 

モジュールの有効化

 $ drush en missing_module
The following extensions will be enabled: missing_module
Do you really want to continue? (y/n): y
missing_module was enabled successfully.                                                                     [ok]

リストの表示

missing モジュールの一覧を表示します。

 $ drush list-missing-modules 

drushコマンドのエイリアスが登録されています。
drush lmm でも同じ動作です。

モジュール情報の削除

 $ drush list-missing-modules
no missing modules found.                                                                                    [success]

missing moduleが存在しない場合はこのようなメッセージになります。

drushコマンドのエイリアスが登録されています。
drush rmm でも同じ動作です。


今回使用してみて、drupal 6.xのインストール時に使用したJapanese.profilesの情報はこのモジュールでは削除できませんでした。
これについてはphpMyAdminからデータベースにアクセスし該当箇所を削除しました。

1つくらいなら間違えずにデータベースを直接操作しても削除できるでしょうが、数が多い場合や、どれがmissing moduleなのかを調べるにはこういったモジュールを使ったほうが確実だと思います。

モジュールの無効化

常時使用するモジュールではないので、次に使用するときまで無効にしておきます。

 $ drush dis missing_module 

以上で、データベースのアップグレードのたびに表示されるWarrningメッセージが出力されなくなりました。

Drupalバージョン

Drupal 7.x