Re: 8.3.1から8.4.4へアップデートしましたが元に戻す方法はありますか?

2019年3月27日 at 10:12

ご返事有難うございます。

ドキュメントライブラリの件ですが、標準のブロックで起きています。
エアーは内容は以下の通りで、海外の投稿ではMysqlの設定変更で対処するとあるのですが、さくらのサーバーでは変更できないとの回答とさくらからもらっています。

(海外の投稿)
http://github.com/concrete5/concrete5/issues/7311

(エラー内容)
An exception occurred while executing 'SELECT distinct n.treeNodeID, if(nt.treeNodeTypeHandle='file', fv.fvTitle, n.treeNodeName) as folderItemName, if(nt.treeNodeTypeHandle='file', fv.fvDateAdded, n.dateModified) as folderItemModified, case when nt.treeNodeTypeHandle='search_preset' then 1 when nt.treeNodeTypeHandle='file_folder' then 2 else (10 + fvType) end as folderItemType, fv.fvSize as folderItemSize FROM TreeNodes n INNER JOIN TreeNodeTypes nt ON nt.treeNodeTypeID = n.treeNodeTypeID LEFT JOIN TreeFileNodes tf ON tf.treeNodeID = n.treeNodeID LEFT JOIN FileVersions fv ON tf.fID = fv.fID and fv.fvIsApproved = 1 LEFT JOIN FileSetFiles fsf ON tf.fID = fsf.fID LEFT JOIN FileSearchIndexAttributes fis ON fv.fID = fis.fID WHERE ((nt.treeNodeTypeHandle = "file_folder") OR (fsf.fsID = 1)) AND (n.treeNodeParentID = ?) ORDER BY fv.fvTitle asc LIMIT 20 OFFSET 0' with params ["7"]: SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column 'k2-infinities_k2i_data.fv.fvTitle' which is not in SELECT list; this is incompatible with DISTINCT

(サーバ環境)
# concrete5 Version
Core Version - 8.4.5
Version Installed - 8.4.5
Database Version - 20180717000000

# concrete5 Packages
Stucco (2.1.6)

# concrete5 Overrides
None

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

# Server Software
Apache

# Server API
apache2handler

# PHP Version
7.2.14

# PHP Extensions
apache2handler, apcu, Core, ctype, curl, date, dom, exif, fileinfo, filter, gd, gettext, gmp, hash, iconv, intl, json, libxml, mbstring, mcrypt, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, posix, Reflection, session, SimpleXML, snmp, soap, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - -1
max_input_vars - 1000
memory_limit - 128M
post_max_size - 8M
upload_max_filesize - 2M
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
session.cache_limiter - <i>no value</i>
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
opcache.max_accelerated_files - 10000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5

Re: Re: 8.3.1から8.4.4へアップデートしましたが元に戻す方法はありますか?

2019年6月27日 at 3:37
動くようにできたのでアップしておきます。

先だって運用環境のさくらインターネットでphpバージョンを7.3に上げるのでサイトの対応をするようにとの通知がきたのでconcrete5のバージョンを8.3.2からphp7.3対応の8.5.1へアップすることにしました。

ここでも8.4.4にアップしたときと同じエラーが発生し、今回はconcrete5のバージョンアップは必須となってしまったのでエラー原因と発生箇所を探していじってみました。

やったことはエラーの原因であるOrder byで指定するカラムがselectにないこと(こういう認識ですが間違っていたらすみません)なので、selectにカラムを追記してみたら動くようになりました。

ソース:\updates\concrete5-8.5.1\concrete\src\File\FolderItemList.php
編集箇所:$this->query->select('distinct n.treeNodeID')

この文を以下のようにfv.fvTitleを追記して変更
$this->query->select('distinct n.treeNodeID,fv.fvTitle')

これでいいのかどうかわかりませんが、とりあえず表示も編集もできるようです。

なにかアドバイスがあればお願いいたします。