Craft CMS を 3.4.29.1 から 3.5.0-RC1.1 にアップデートしたときに発生した Undefined index: siteSettings エラーが出たので対応した方法をご紹介します。
昨日、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! です。
以上です。