Drupal8がエラーをキャッチしないことがよくあります
- デバッグモードでないと、いろいろなエラーがキャッチされなく、そのままスローされてしまい、システムログファイルにも残らず、わからなくなります
- デバッグモード:例、xdebugを有効化にして、xdebug.show_exception_trace = true を設定すればエラーがDrupalの画面に表示されます
- 例:Drupal-8.8.5のログインすると、VCCodeのデバッグモードで以下のエラーが表示されます
- Exception has occurred.
Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[42S02]: Base table or view not found: 1146 Table '2drills-d8.flood' doesn't exist: SELECT 1 FROM {flood} LIMIT 0, 1; Array
(
)
- なぜか、Floodというテーブルがないようです
- Floodは、Drupal7時にあるセキュリティ関連モジュール:Floodのことから出たと思います。Drupal8が最初このモジュールをコアーに編入したが、いつの間にかこれモジュールをコアーから外したようです。外した時に、コアーのところに、Floodモジュールのコードがそのまま残っていて、Floodロジックが作動したときに、エラーが発生しました。
- Exception has occurred.
アンキャッチされたエラーがそのまま放置か、関連モジュールの導入
- この問題では、関連モジュールの動作でエラーを引き起こしましたが、そのままにしてDrupal8に問題はなさそうです
- エラーをスローしたが、最後ではキャッチしていないため、なんの問題を生じませんでした
- 上記モジュール:Floodがコアーから外されたようで、実際に別のモジュール:Flood Settingが同じ機能を果たしています。このモジュールをインストールすれば、上記エラーは発生しませんでした。
- Flood SettingsがFloodテーブルをDBに作成したので、上記エラーが発生しなくなります
- Floodのロジックは依然作動していて、パフォーマンスに影響は多少あるでしょう。このモジュールをインストールしたといって、問題解決ではありません