CakePHP3のBookmarkerチュートリアルでエラー

MacのEl Capitanに開発環境をこさえて、ようやくCakePHPのチュートリアル始めたと思ったら、手順通りやってたのにMySQLでエラーが。

エラーが出たのは、/bookmarks/tagged/funny/cat/gifsのところ。

Error: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #8 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cake_bookmarks.Tags.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

手順通りなのにエラーで困ってたら、どうも原因はMySQLのバージョンによるものらしい。HomebrewでMacに入れたのはVersion 5.7.10。

脱!ゆるふわMySQL – Qiita

5.7以降でsql_modeの初期設定が変更されたらしいです。my.cnfを変更して対応してもいいんですが

mysql – Disable ONLY_FULL_GROUP_BY – Stack Overflow

SET sql_mode = ''

でも対応できるようなので、config/app.php内にある

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        ...(省略)
        'init' => ["SET sql_mode = ''"],
    ],

initにセットして対応。無事、Bookmarkerチュートリアルが完了しますた!!