2015-11-20 2 views
2

После перехода от 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 
+0

Комментарии от MariaDB являются правильными. Запросы MySQL отправляются, если они не соответствуют стандарту ANSI SQL в отношении GROUP BY. –

+0

А это значит? :) – clarkk

+0

Следуйте стандартам 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 возвращал, потому что у него не было возможности узнать, какие данные были правильными. –

ответ

1

Системная переменная SQL_MODE, как представляется, содержит режим ONLY_FULL_GROUP_BY.

ONLY_FULL_GROUP_BY устанавливает строгие ANSI SQL поведение и отключает MySQL GROUP BY.

См also, и обратите внимание, что этот режим по умолчанию в MySQL 5.7, так что вы бы столкнулись с такой же проблемы при переходе с MySQL 5.6 на MySQL 5.7, также

+0

Как сделать мои два запроса совместимыми с 'ONLY_FULL_GROUP_BY'? – clarkk

Смежные вопросы