Drupalの設定が壊れて修復できない!の対処法

こんにちは。
ぴころじーの竹川です。

実は先日、新規開発しているウェブサイトで突然!こんな事象が発生しました。

Viewsの設定を変更して保存しようとすると、「'master_display' is not a supported key.」というエラーメッセージが表示されて構成を保存することができない。

何度試しても、エラーが発生します。困った・・・。

Drupalの環境

  • Drupalのバージョン:10.3.1
  • Drushのバージョン:12.5.2.0
  • PHPのバージョン:8.1.22
  • データベース:MariaDB 10.5.17

試したこと

  • キャッシュクリア(drush cr)
  • データベースの再構築(drush updatedb)
  • エラーを発生させてからレポートを確認(何も表示されない)
  • 一旦全部削除して、直近のバックアップから戻す
  • 「デフォルト」のみの設定のビューを持つモジュールをアンインストール(図のようなビューです)

しかし、全滅。何をしたらこのようなエラーが発生するようになるのか、原因は全く分かりません。いずれにしても、今はなき設定である「master display」が関係していることは間違いありません。Drupal10では、master displayの名称がdefault displayに変更されています。

調査と解決

とにかく、まったく見当もつかないため、Google先生に頼るしかありません。

master_display is not a supported key drupal

で検索をかけるも、有力な情報は全くヒットせず。日本語の情報は皆無です。

ふと、master display以外にも何らかの似たようなエラーがあるのでは?と思い、

is not a supported key drupal

で検索してみると、

'ipless' is not a supported key

というエラーの解決法がDrupalのフォーラムにありました。

エラーの原因としては全く関係なかったのですが、そこからのヒントで、drushで色々と遊んでみたんです。drushって色々と機能があって面白いんです。普段多用するキャッシュクリア(drush cr)だけじゃないんですよ。

drush config:status

って打ってみて、これって、Drupalの設定じゃん!と思いながら見ていると、気になる項目がありました。

views.settings

じゃぁこの中身を見てみようって思ったんですよね。

drush config:edit views.settings

あれ?なんか、それっぽいのがあるぞ・・・。drushで遊んでいたらアタリを引いたようです。

master_display: true

これじゃない?設定の中に、存在しないはずのキーがあるから保存できない。エラーメッセージと内容的に一致するんです。ただ、この設定、管理画面からは見えないし、設定もできない。だから、解決できなかったんじゃない?と。

ちなみに、他の私が管理しているDrupal10のサイトではこんな感じです。

壊れてもいいように、念の為バックアップを取ってから、設定を変更してみます。viを利用しているようで、編集方法は全く同一です。

あまり多く触りたくないので、「master_display: true」の一行だけを削除して上書き保存です。

・・・。これ普通にやばいやつでしょ!?

バックアップを取ってあるとはいえ、手汗が止まりません。サイトの状態などを確認して、稼働していることを確認します。まずは、大丈夫なようだ・・・。

なになに?「テーマに依存している」と。とりあえず、テーマを最初からインストールされている「Olivero」に変更して、再度同じ編集を試みます。

おい!テーマじゃないのかぁ・・・。怪しい設定を見つけても保存できない。もうゴールは目の前にありそうなんだけどな。何かないかな~とdrushのコマンドを見ていました。

ちなみに、drushとだけ打つとコマンド一覧を見ることができます。

この中に、revertというのがあります。これが気になりました。revertというのは、初期値に戻すコマンドです。ダメ元で実行!

drush config:revert views.settings

管理画面から、ビューの設定を確認してみます。

設定を適当に変更してから、「構成を保存」をポチッとクリックします。

おおう!できた!なおった!drush最高!!

1日以上悩んで調べて、結構時間がかかりましたが、drupalの設定関係でなにか不整合のようなおかしな現象が発生した場合、drushで修正することができます。今回は、viewsでしたが、設定は多岐にわたります。

drupalが壊れてしまった?どうしようもない?と思う前に一度お試しください。