После перехода от Mysql 5.6
к MariaDB 10.1
я получаю эти SQL ошибкимиграция - MySQL 5.6 -> MariaDB 10.1 -> Ошибки SQL
SQL 1
SELECT dv.id,IF(de.id IS NULL,0,1) is_attached,dv.time,dv.label,dv.is_pdf_scan,dv.is_pic_low_resolution,dv.file_sha1,dv.file_ext,dv.file_ext_thumb,dv.file_size,dv.file_size_original,dv.file_name,u.name from_name,dv.from_email
FROM `data_voucher` dv
LEFT JOIN `data_voucher_enclosure` de ON de.data_voucher_id=dv.id
LEFT JOIN `user` u ON u.id=dv.user_id
WHERE IF(de.id IS NULL,0,1)=0 && dv.time>=1420070400 && dv.time<=1451606399 && dv.client_id=1 && dv.block_id=4544 && dv.is_ready=1 && dv.is_deleted=0
GROUP BY dv.id
ORDER BY dv.time DESC,dv.id DESC
LIMIT 0,25
ошибка 1
#1055 - 'dynaccount.de.id' isn't in GROUP BY
SQL 2
ошибка 2
#1055 'dynaccount.dv.time' isn't in GROUP BY
UPDATE
В phpmyadmin
я получаю подобную ошибку при нажатии на вкладку databases
SQL
SELECT s.SCHEMA_NAME,s.DEFAULT_COLLATION_NAME
FROM `information_schema`.SCHEMATA s
GROUP BY BINARY s.SCHEMA_NAME
ORDER BY BINARY `SCHEMA_NAME` ASC
ошибка
#1055 - 'information_schema.s.SCHEMA_NAME' isn't in GROUP BY
Комментарии от MariaDB являются правильными. Запросы MySQL отправляются, если они не соответствуют стандарту ANSI SQL в отношении GROUP BY. –
А это значит? :) – clarkk
Следуйте стандартам ANSI SQL? Все возвращаемые значения в GROUP BY должны иметь функцию, применяемую к ним, чтобы GROUP BY знала, что вернуть. Теперь вы возвращаете 'dv.id, dv.time' при группировке' dv.time'. ANSI SQL теперь задается вопросом: у меня есть 2 'dv.id' записи со значением 1 с двумя значениями' dv.time', которые вы имеете в виду dv.time? Поэтому вам нужно предоставить функцию min/max/avg/etc, чтобы идентифицировать данные, которые вы хотите вернуть для каждого возвращаемого значения. Это также заставляет меня задаться вопросом, что MySQL возвращал, потому что у него не было возможности узнать, какие данные были правильными. –