共用サーバでMySQL利用時のsql_mode設定について

レンタルサーバを契約してEC-CUBE環境を作成されている方は、殆どMySQLを利用されている方が多いと思います。

ただ、レンタルサーバ会社によってはsql_modeの設定がデフォルトのままという時もあります。

基本的には標準でも問題ありませんが、カスタマイズされている方は時々、

ONLY_FULL_GROUP_BY

が影響して正しく動作しない時があります。my.cnfが修正できれば良いのですが、共用サーバのため当然修正なんてできません。

それを回避するために、

app/config/eccube/packages/doctrine.yaml

の設定を以下のように変更すれば対応可能です。

  • app/config/eccube/packages/doctrine.yaml
・
・
・
doctrine:
    dbal:
        driver: 'pdo_sqlite'
        server_version: "%env(DATABASE_SERVER_VERSION)%dbal"
        charset: utf8

        # for mysql only
        default_table_options:
          collate: 'utf8_general_ci'
        options:
            1002: 'SET sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY", ""))'
・
・
・

上記内容では、optionsというパラメータを追記しました。

options:
    1002: 'SET sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY", ""))'

これで問題なく動作されるようになる筈なので一度お試しください。