バージョン8.2.1→8.4.3で「予期せぬエラーが発生しました。」表示され進めない

2019年1月9日 at 11:11

アップグレード時に「予期せぬエラー」が発生しました。

環境・経緯:
・AWS-Plesk上にConcrete5設置
・元々5.7.5.13で、8.2.1へアップグレード
・上記アップグレード後、「Sessions」テーブルに「sessionLifeTime」カラムが無いとエラー発生。このサイト↓を参照して「sessionLifeTime」カラムを追加して復旧。
http://www.concrete5.org/community/forums/installation/installing-version-8-with-existing-database
・8.2.1から8.4.3へアップグレード時に下記エラー発生(予期せぬエラーが~)
・8.2.1→8.3.0でも同様
・アップグレード方法は自動リモートアップグレードは動作せず(アップグレード対象(8.4.3)が表示されない)
・手動リモートアップグレードと上書きアップグレード両方試したが同エラー発生

このエラーの対策をご存知の方がいらっしゃいましたらご教授頂ければと思います。
よろしくお願い致します。


予期せぬエラーが発生しました。
An exception occurred while executing 'SELECT t0.akID AS akID_8, t0.akHandle AS akHandle_9, t0.akName AS akName_10, t0.akIsSearchable AS akIsSearchable_11, t0.akIsInternal AS akIsInternal_12, t0.akIsSearchableIndexed AS akIsSearchableIndexed_13, t0.atID AS atID_14, t0.akCategoryID AS akCategoryID_15, t0.pkgID AS pkgID_16, t0.akCategory, t4.uakProfileDisplay AS uakProfileDisplay_17, t4.uakProfileEdit AS uakProfileEdit_18, t4.uakProfileEditRequired AS uakProfileEditRequired_19, t4.uakRegisterEdit AS uakRegisterEdit_20, t4.uakRegisterEditRequired AS uakRegisterEditRequired_21, t4.uakMemberListDisplay AS uakMemberListDisplay_22, t6.entity_id AS entity_id_23 FROM AttributeKeys t0 LEFT JOIN SiteAttributeKeys t1 ON t0.akID = t1.akID LEFT JOIN CalendarEventAttributeKeys t2 ON t0.akID = t2.akID LEFT JOIN FileAttributeKeys t3 ON t0.akID = t3.akID LEFT JOIN UserAttributeKeys t4 ON t0.akID = t4.akID LEFT JOIN CollectionAttributeKeys t5 ON t0.akID = t5.akID LEFT JOIN ExpressAttributeKeys t6 ON t0.akID = t6.akID LEFT JOIN LegacyAttributeKeys t7 ON t0.akID = t7.akID WHERE t0.pkgID = ?' with params [5]: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'Concrete5_f.CalendarEventAttributeKeys' doesn't exist

タグ:

Re: バージョン8.2.1→8.4.3で「予期せぬエラーが発生しました。」表示され進めない

2019年1月9日 at 13:43
SQL部分を改行・タブ分け・色分けしてわかり易くしてみました。(添付画像)
「CalendarEventAttributeKeys」というテーブルが無いというエラーの様ですので、
このテーブルを追加してカラム「akID」をType=INT,Length=10,Default=None,Attributes=UNSIGNEDで追加したところ、復旧し、バージョンアップ出来ました。
他に不具合無いかしばらく触ってみます。
 

Re: バージョン8.2.1→8.4.3で「予期せぬエラーが発生しました。」表示され進めない

2019年1月16日 at 14:52
その後特に問題も無かった為、本番サーバでもバージョンアップを行ったところ、(今回は8.2.1→8.4.4)同様のエラー発生→DB操作の後、下記別のエラー発生。

An exception occurred while executing 'SELECT t0.id AS id_1, t0.name AS name_2, t0.handle AS handle_3, t0.plural_handle AS plural_handle_4, t0.label_mask AS label_mask_5, t0.supports_custom_display_order AS supports_custom_display_order_6, t0.description AS description_7, t0.result_column_set AS result_column_set_8, t0.include_in_public_list AS include_in_public_list_9, t0.entity_results_node_id AS entity_results_node_id_10, t0.items_per_page AS items_per_page_11, t0.created_date AS created_date_12, t0.default_view_form_id AS default_view_form_id_13, t0.default_edit_form_id AS default_edit_form_id_14, t0.pkgID AS pkgID_15 FROM ExpressEntities t0 WHERE t0.pkgID = ?' with params [5]: SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.items_per_page' in 'field list'

「ExpressEntities」テーブルに「items_per_page」カラムが無いとのエラーの為、対象カラムを追加(Type:INT/Length:10/Default:None)した所、バージョンアップ成功しました。

復旧しているので一先ずは良いのですが、原因も分からずこういった場当たり的な対応で良いのか分からずモヤモヤが残ります。もっと根源的な修正方法や、ここをこうした方が良いなどのアドバイスがありましたらご教示頂けると幸いです。よろしくお願い致します。
 

Re: バージョン8.2.1→8.4.3で「予期せぬエラーが発生しました。」表示され進めない

2019年2月12日 at 10:15
お世話になります。

遅くなりましたが投稿を拝見しました。

アップグレード時の処理がタイム・アウトしてしまった可能性と、アップグレードスクリプトのエラーが考えられます。

バグであればどういう条件でこのバグが発生するか、concrete5 を新規でインストールしてからの変更がどのようなものかを検証し、再現する必要があります。普段のアップデートでは問題が無いので、何か多くの方が行っていない concrete5 の設定の変更などがバグのトリガーになっていると思います。



アップグレード時の処理がタイム・アウトされてしまった可能性について説明します。

まず、ブラウザではなく、SSH から concrete5 の CLI を使ってアップデートを試み、成功すればタイムアウトが原因です。

PHP の max_execution_time が小さいと、これらのアップデートの時間が足りなくなり、ブラウザだと、最後までアップデートが走らない場合があります。

■ CLI でのアップデートの方法

CLI でのアップデートの方法です。

/[c5 までのパス]/concrete/bin/concrete5 c5:update コマンドでアップデートをします。それがダメであれば --rerun オプションを使って、アップデート再度走らせます。 --after オプションを使うことで、アップデート前のバージョンを正しく指定してアップデートのスクリプトをすべて走らせることが可能です。


concrete/bin/concrete5 c5:update --rerun --after=8.2.1

サーバーが apache や nginx ユーザーとして実行している場合は
sudo -u apache か
sudo -u nginx を
つけて実行する必要があります。


■ おまけ:開発者向けの参考情報

開発者向けの
参考情報として・・・。

アップグレードの際、concrete5 では Migration スクリプトを走らせています。

concrete5 過去のバージョンからアップデートする際 concrete5 内で変更がある場合があります。データベースの構造が変わったり、管理画面のページが増えたり、デフォルトのページ属性が増えたりします。

それらの変更が各バージョンごとに、バージョンがリリースされた日付で変更を適用する PHP スクリプトが入っています。

参考までにそのスクリプトの場所は /concrete/src/Uddater/Migrations/Migrations/ 配下です。

それではよろしくおねがいします。
 

Re: バージョン8.2.1→8.4.3で「予期せぬエラーが発生しました。」表示され進めない

2019年3月1日 at 14:03
返信遅れ申し訳ありません。
ご回答ありがとうございます。
元々外注依頼したものを自社でメンテナンスしており、詳細が良く分かっていない所がある為、特殊な設定をしていないか業者に確認してみます。
タイムアウトの件についても時間ある際にCLIからトライしてみます。
ご丁寧にご対応頂きありがとうございました。