Ответ 1
Отредактируйте конфигурацию файла config/database.php
приложений config/database.php
В массиве mysql
установите strict => false
чтобы отключить строгий режим MySQL
Я не могу запустить этот простой запрос в Laravel 5.3
$top_performers = DB::table('pom_votes')
->groupBy('performer_id')
->get();
Это дает мне:
SQLSTATE[42000]: Syntax error or access violation: 1055 'assessment_system.pom_votes.id' isn't in GROUP BY (SQL: select * from `pom_votes` group by `performer_id`)
Однако, если я копирую необработанный запрос из ошибки и запускаю непосредственно в PhpMyAdmin, он отлично работает.
Я уже проверил это:
https://laravel.com/docs/5.3/queries#ordering-grouping-limit-and-offset
Любая помощь будет применена.
Спасибо,
Parth Vora
Отредактируйте конфигурацию файла config/database.php
приложений config/database.php
В массиве mysql
установите strict => false
чтобы отключить строгий режим MySQL
Возможно, ваша проблема связана с тем, что вы используете сервер MySQL с версией 5.7. 5+. Из этой версии в отношении того, как GROUP BY
работает, изменяется, поскольку они заставляют его вести себя, чтобы быть совместимым с SQL99 (где в предыдущих версиях это не было).
Попробуйте сделать полную группу или изменить конфигурацию вашего сервера MySQL.
Ссылка на официальный MySQL-документ, где объясняется полная GROUP BY
Отредактируйте конфигурацию файла конфигурации базы данных приложений /database.php
В массиве mysql установите strict => false, чтобы отключить строгий mod MySQL
или же
sudo nano/etc/mysql/mysql.cnf
[mysqld] sql_mode = NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
Если вы ошибочно строгий режим, вы не можете использовать другие строгие функции для исправления этой ошибки. Перейдите в Illuminate\Database\Connectors\MySqlConnector.php и измените функцию, как показано ниже:
protected function strictMode() {
return "set session
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY
_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'";
}
замените функцию на это.