人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel の mysql の sql_mode を 調査し変更する

● Laravel の mysql の sql_mode を 調査する

Laravelアプリケーションではmysql の sql_mode はどうなっているのでしょうか?

$sql_mode = DB::select( 'SHOW VARIABLES LIKE "%sql_mode%"' );
dump($sql_mode);

戻り値()

ONLY_FULL_GROUP_BY,
STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,
NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION

● Laravel の mysql の デフォルトの sql_mode を変更する

app/config/database.php

        'mysql' => [
            'driver' => 'mysql',
            .........
            // これをコメントアウトOFF  'strict' => true,
        ],

この状態で sql_mode を調べると

$sql_mode = DB::select( 'SHOW VARIABLES LIKE "%sql_mode%"' );
dump($sql_mode);

戻り値()

NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION

となります。
sql_mode を追加するには modes に記述してあげます。

● Laravel で groupBy() を使用した時のエラー「Syntax error or access violation: 1055」に対応する

app/config/database.php を以下のように変更します

            // 'strict' => true,    // OFF
            'modes' => [
                //'ONLY_FULL_GROUP_BY', // OFF
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_AUTO_CREATE_USER',
                'NO_ENGINE_SUBSTITUTION'
            ],
No.1477
04/08 09:18

edit