この記事は3分50秒で読めます。

みなさん。こんにちは、eccuberの西田です。
EC-CUBEの構築を行っている中で、困りごとを少しお話します。

MySLQ8.0対応

EC-CUBEではMySQL8には正式対応していませんがサポート期間を考えると
最新バージョンを利用したいですよね。

MySQL8.0へバージョンアップで気を付ける点を3つあげます。

1.MySQL8.0がインストールできない!!

「GPG Keys are configured ・・・・」のメッセーがでている場合は

GPG Keysが有効期限で定期的に変更になりますので最新のGPG Keysを取得することでインストール可能となります。

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

公式ドキュメント より

https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

2.商品一覧でのエラー回避

商品一覧を表示した際にこのような例外エラーで開けなくなることがあります。

Cannot select distinct identifiers from query with LIMIT and ORDER BY on a column from a fetch joined to-many association

EC-CUBE4.1.0の場合、ProductController.phpの167行目あたりのpaginationの処理に
「array(‘wrap-queries’ => true)」を追加します。
src\Eccube\Controller\ProductController.php

↓修正後

   /** @var SlidingPagination $pagination */
        $pagination = $paginator->paginate(
            $query,
            !empty($searchData['pageno']) ? $searchData['pageno'] : 1,
            !empty($searchData['disp_number']) ? $searchData['disp_number']->getId() : $this->productListMaxRepository->findOneBy([], ['sort_no' => 'ASC'])->getId(),
            array('wrap-queries' => true) //対策Cannot select distinct identifiers from query with LIMIT and ORDER BY on a column from a fetch joined to-many association
        );

3.MySQLのコンフィグ修正

Mysql8.0のデフォルトのsqlmodeではONLY_FULL_GROUP_BYなどのエラーがでることがありますのでmy.cnfに下記を記述してMysqlを再起動します。

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

これでMySQL8.0も安定して動作します。MySQL8.0とは関係ないですが、知らずにハマったことがあります。
EC-CUBE4系でdatetime型はUTCに変換されてDBに更新されます。
フロントで表示する際にはlocalTimeZoneに自動で変換されて表示しています。
これを知らずに2系からデータを移行したり、DBから単純にデータを取得すると想定している値とズレる現状がでます。

私はUTCに変換しないように修正しました。国内で使用している限り不要な仕様だと思っています。
doctrine.yamlのtypesをコメントアウトすることでUTC変換を行わないようにすることができます。

# types:
        #     datetime: 'Eccube\Doctrine\DBAL\Types\UTCDateTimeType'
        #     datetimetz: 'Eccube\Doctrine\DBAL\Types\UTCDateTimeTzType'

最後に

PHP7.4、CentOSやAmazonLinux2のサポート終了が迫っています。
現在AlmaLinuxでEC-CUBEの構築を実験中です。
サポート終了に伴う対応などお困りのことがございましたら、下記よりお問い合わせください。

弊社では、お客さまとともに事業成功へ向けての二人三脚をお約束いたします。
そのため、流行りや非現実的な施策のご提案ではなく、現実的かつお客様に最適な施策をご提案いたします。
日々の運用課題から、売上アップの方法等様々なご相談にお答えしていきますので、お気軽に以下までご連絡ください。
▼問合せフォームから相談してみる。
https://ec-cuber.jp/contact-us/
▼メールで相談してみる。
sales_ec@ids.co.jp
▼電話で直接相談してみる。
03-5484-7811