MariaDb не поддерживает функцию ANY_VALUE () - PullRequest
0 голосов
/ 13 января 2019

У меня есть проект laravel, который подключен к mysql db, когда я меняю свой сервер, мои коды перестали работать, потому что у моего нового сервера Mariadb, когда я проверял свои журналы, я понял, что есть некоторые неподдерживаемые функция от MariaDb, которая ANY_VALUE(),

как я могу редактировать свой sql в соответствии с MariaDb?

select(DB::raw('SUM(price) as price, SUM(price_now) as price_now, 
   ANY_VALUE(price_available) as price_available'),'adult_count')

журнал ошибок

Ответы [ 2 ]

0 голосов
/ 14 января 2019

На сегодня вы решили проблему. Но завтра, когда вы выполните тот же запрос, вы получите другую ошибку.

В более старых версиях MySQL или MariaDB вы получите «любое значение» для price_available, если не GROUPing BY. Это было фактически где-то между «плохой практикой» и «нарушением стандартов». Относительно недавно MariaDB, а затем и MySQL, переключились на «только полную группу». В то время, ANY_VALUE() появился для MySQL, но, очевидно, MariaDB бросил мяч.

Старый обходной путь, который должен быть безопасным как для старых, так и для новых версий, заключается в использовании MIN(price_available) или какой-либо другой агрегатной функции.

См. Также настройку ONLY_FULL_GROUP_BY.

0 голосов
/ 13 января 2019

Я решил заменить это:

выберите (DB :: raw ('SUM (цена) в качестве цены, SUM (price_now) в качестве price_now, ANY_VALUE (price_available) как price_available '),' adult_count ')

до

выберите (DB :: raw ('SUM (цена) в качестве цены, SUM (price_now) в качестве price_now, price_available как price_available '),' adult_count ')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...