Craft CMS を 3.4.29.1 から 3.5.0-RC1.1 にアップデートしたときに発生した Undefined index: siteSettings エラーへの対処法

Craft CMS を 3.4.29.1 から 3.5.0-RC1.1 にアップデートしたときに発生した Undefined index: siteSettings エラーが出たので対応した方法をご紹介します。

Craft CMS Logo

昨日、Craft CMS 3.5.0-RC1 がリリースされました。

Craft CMS の Beta や RC 版を利用したときは、 composer.json の 中の "require""craftcms/cms" のバージョン番号を手動で書き換えてあげる必要があります。

"craftcms/cms": "^3.5.0-RC1.1",

その後に composer update コマンドを走らせれば OK です。

composer update の処理が終わったら、ブラウザで管理画面にアクセスして「 Finish Up 」ボタンをクリック、その後に「Continue」ボタンをクリックすれば OK なはずです。しかし、今回このブログをアップデートするとき、Finish Up 中のマイグレーションで下記のエラーが発生しました。

yii\base\ErrorException: Undefined index: siteSettings

Migration: craft\migrations\m200620_230205_field_layout_changes

Output:

> add column elements text AFTER name to table {{%fieldlayouttabs}} ... done (time: 0.247s)
> drop column titleLabel from table {{%entrytypes}} ... done (time: 0.009s)
Exception: Undefined index: siteSettings (/...../vendor/craftcms/cms/src/services/Sections.php:606)
(以下略)

調べてみたところ、Project Config の機能が影響している模様。

もともとこのブログでは Project Config は使っていなかったので、 config/general.php には下記のように書いてあります。

'useProjectConfigFile' => false,

したがって、まずは下記のコマンドで Project Config の設定をきれいにします。

./craft project-config/rebuild

その後、もう一度管理画面にアクセスすれば OK ... というわけには行きませんので要注意です!

先程のエラーメッセージの先頭で、

> add column elements text AFTER name to table {{%fieldlayouttabs}} ... done (time: 0.247s)
> drop column titleLabel from table {{%entrytypes}} ... done (time: 0.009s)

とありますが、もしもう一度管理画面にアクセスすると、この部分の処理でエラーになります。

つまり、「fieldlayouttabs テーブルには既に elements カラムがあるよ!」「entrytypes テーブルに titleLabel カラムなんてないよ!」と言われてしまうわけです。

したがって、まずは phpMyAdmin などでデータベースにアクセスして、fieldlayouttabs テーブルから elements カラムを削除、entrytypes テーブルに titleLabel カラムを追加しておく必要があります。

その後、管理画面にアクセスして「Finish Up」「Continue」と進めば All done! です。

以上です。

Published 2020-07-23
Updated 2020-07-23