Я новичок в Laravel, и у меня возникла проблема с БД.
Я отключил «only_full_group_by» sql_mode редактированием /etc/mysql/my.cnf
файл. И я проверил sql_mode
для глобального и сеансового использования SELECT @@GLOBAL.sql_mode;
а также SELECT @@SESSION.sql_mode;
и подтвердил, что sql_mode
больше не имеет only_full_group_by
,
Однако, когда я делаю запрос через почтальона, он выдает ошибку this is incompatible with sql_mode=only_full_group_by
,
Я так растерялся. Почему я получаю эту ошибку даже после того, как я изменился sql_mode
? Я делаю что-то неправильно?
Любые предложения или советы будут оценены.
Спасибо.
SQL с помощью toSql ()
select A.*
from `A`
inner join `B` on `A`.`id` = `B`.`a_id`
inner join `C` on `C`.`id` = `B`.`c_id`
group by `A`.`id` having COUNT(A.id) > 0;
Это неправильный способ сделать это. Вместо выключения only_full_group_by
В этом режиме вы должны исправить запрос, чтобы он не нарушал MySQL:
SELECT a1.*
FROM A a1
INNER JOIN
(
SELECT A.id
FROM A
INNER JOIN B
ON A.id = B.a_id
INNER JOIN C
ON C.id = B.c_id
GROUP BY A.id
HAVING COUNT(A.id) > 0
) a2
ON a1.id = a2.id;
Я не знаю, почему ваши попытки отключить строгий режим потерпели неудачу, но вы ни в коем случае не должны на это полагаться.
Чтобы ответить на исходный вопрос, если вы хотите отключить это в Laravel, вы должны изменить значение ‘strict’ на ложный в конфигурации вашей базы данных в config / database.php.
'connections' => [
...
'mysql' => [
...
'strict' => false,
...
],
]