2016-11-22 1 views
0

Я получаю эту ошибку при слежении max_join_size, когда я раскрываю мое CakePHP v3 приложение виртуальный хостинг:Как получить круглую max_join_size с CakePHP v3.x

Error: SQLSTATE[42000]: Syntax error or access violation: 1104 The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay 

Это кажется общей проблема, но может кто-нибудь сказать мне, как обойти это при использовании cakephp v3.x? Я попытался положить следующий код в приложение/SRC/Model/AppModel.php:

function beforeFind() { 
     $this->query('SET SQL_BIG_SELECTS=1'); 
    } 

, но это, кажется, не имеют никакого эффекта.

ответ

0

CakePHP 3.0 больше не использует AppModel. Вы действительно должны read the migration guide. Внесите его через прослушиватель событий на Model.beforeFind или как поведение.

Дальнейшая настройка SQL_BIG_SELECTS на 1 кажется плохой практикой для меня. Вы не должны обойти симптомы, но исправить причину: Подумайте, что не так с вашим запросом.

См. MySQL - SQL_BIG_SELECTS, который имеет хороший ответ.

+0

Я принял ваш совет и нашел другой способ достичь того, что я хотел сделать. Мое оригинальное решение было более элегантным и не было смешным количеством подключений, но эй ... – pkbevans