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。
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チュートリアルが完了しますた!!
thanks for configuring cakephp 3, it works like a charm :D