ブロックを編集後に「保存」をクリックするとエラーが表示され更新できない

2021年2月3日 at 11:51

ローカル環境である程度作成後に、サーバーへデプロイしました。
問題なく表示され、ログインもできました。
ページ内のブロックを編集し、「保存ボタン」クリックすると下記のようなエラーが表示され
更新が確定できなくなりました。

Call to a member function getColumns() on null

本来なら関数が受け取るべき情報が渡されないようなのですが・・・、どのような方法で解決すればよいかわからないでいます。
よろしくお願いいたします。


【開発環境】
# concrete5 Version
Core Version - 8.5.4
Version Installed - 8.5.4
Database Version - 20200609145307

# Database Information
Version: 5.6.23-log
SQL Mode: NO_ENGINE_SUBSTITUTION

# concrete5 Packages
Honest Websites Back To Top (1.1.0), Spacer (0.9.4)

# concrete5 Overrides
None

# concrete5 Cache Settings
Block Cache - Off
Overrides Cache - Off
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache

# Server API
cgi-fcgi

# PHP Version
7.4.12

タグ:

Re: ブロックを編集後に「保存」をクリックするとエラーが表示され更新できない

2021年2月3日 at 12:53
下記2つの投稿が参考になるかもしれません。
http://www.concrete5.org/community/forums/customizing_c5/add-block-error-call-to-a-member-function-getcolumns-on-null

http://www.concrete5.org/community/forums/installation/error-updating-blocks-after-moving-site-to-new-server
 

Re: ブロックを編集後に「保存」をクリックするとエラーが表示され更新できない

2021年2月3日 at 14:58
ご返信ありがとうございます。
リンク先の回答をヒントに調べたところ、サーバーにアップロードしたデータベースに「auto_increment」が抜けていることがわかりました。
アップロード前のsqlファイルには「auto_increment」が書かれています。
再度sqlファイルをアップロードしたところ、エラーが表示されました(きっと最初の時もでていたのですね・・・)


--------------
-- テーブルのインデックス `AreaPermissionAssignments`
--
ALTER TABLE `AreaPermissionAssignments` ADD PRIMARY KEY ( `cID` , `arHandle` , `pkID` , `paID` ) ,
ADD KEY `paID` ( `paID` ) ,
ADD KEY `pkID` ( `pkID` ) ;

MySQL のメッセージ: ドキュメント

#1071 - Specified key was too long; max key length is 767 bytes
----------


phpmyadminのインデックスサイズに文字数の制限があり、それにひっかかっているようでした・・・
 

Re: Re: ブロックを編集後に「保存」をクリックするとエラーが表示され更新できない

2021年2月3日 at 20:04
原因が見つかって何よりです。
 

Re: ブロックを編集後に「保存」をクリックするとエラーが表示され更新できない

2021年2月7日 at 16:56
2月5日に配信した「第379回 週刊 concrete5」で取り上げました。
http://www.youtube.com/watch?v=aDoR-AOtKAQ
39:45あたりを参照してみてください。

いろんな原因が考えられますが、
データベースのエクスポートとインポートのやり方に主な原因がある可能性が高いかと思われます。
もし可能であればローカル環境での再現を試みてください。