MySQL: содержит ошибку неагрегированного столбца при использовании .group () |Рельсы 5.2 - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю над проектом Rails 5.2 и пытаюсь сгруппировать ActiveRecord::Relation по полю в таблице:

Ниже в консоли rails возвращается ошибка:

2.4.0 :015 > Post.group(:published)
  Post Load (3.9ms)  SELECT  `posts`.* FROM `posts` GROUP BY `posts`.`published` LIMIT 11
ActiveRecord::StatementInvalid: Mysql2::Error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'app_dev.posts.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by: SELECT  `posts`.* FROM `posts` GROUP BY `posts`.`published` LIMIT 11

Но добавление .sum() выполняется правильно без ошибок ...

> Post.group(:published).sum(:views)

Существует ли очевидная причина, по которой первый запрос не будет выполнен таким образом, а не второй?

В schema.rb

create_table "post", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
  t.string "title", null: false
  t.text "body", null: false
  t.boolean "published", null: false, default: false
  t.bigint "views", null: false, default: 0
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

Спасибо

...