Как избежать ошибки: PDOStatement::execute(): сервер MySQL исчез в Yii?

Я постоянно получаю эту ошибку. Как избежать этого с помощью Yii? Я видел несколько вопросов по Yii 1, но они используют параметры, которых нет в документации: http://www.yiiframework.com/doc-2.0/yii-db-connection.html, http://php.net/manual/en/pdo.setattribute.php

Ошибка: PDOStatement::execute(): сервер MySQL ушел

Обычно запрос очень простой.

Выполняемый SQL был: SHOW FULL COLUMNS FROM ad_group_keyword

Я использую MySQL (из ClearDB) и у меня нет доступа к конфигурациям сервера.

Я добавил эти атрибуты в db, но они не помогли.

'attributes' => [
  PDO::ATTR_PERSISTENT => false, // ClearDB connection limit is 90s
  PDO::ATTR_TIMEOUT => 90,
  PDO::MYSQL_ATTR_INIT_COMMAND => 'select 1',
]

person Chloe    schedule 02.09.2015    source источник
comment
Это может быть проблема не Yii, а вашего сервера. Похоже, сервер заблокировал попытку подключения к нему.   -  person DocRattie    schedule 02.09.2015
comment
Это работает большую часть времени. Но 1-2% отказов — это слишком много.   -  person Chloe    schedule 02.09.2015
comment
как насчет небольшого события таймера, которое вы вызываете каждые 60 секунд и которое говорит select 7; ! это проблема тайм-аута с настройками   -  person Drew    schedule 02.09.2015
comment
Хорошо, но как мне это сделать в Yii2? Я не видел в документах опции для обратного вызова таймера. Кажется, я помню эту опцию в Hibernate.   -  person Chloe    schedule 02.09.2015
comment
Добавление этого к db, кажется, смягчило его, но не устранило: 'attributes' => [ PDO::ATTR_PERSISTENT => false // ClearDB connection limit is 90s ]   -  person Chloe    schedule 06.09.2015


Ответы (1)


Хорошо, я решил эту проблему, перейдя с MySQL на ClearDB. Я был не единственным человеком с этой проблемой. https://www.designedbyaturtle.co.uk/2015/dedicated-vs-shared-databases-a-mysql-has-gone-way-fix/

Я перешел с MySQL на Heroku Postgres. https://stackoverflow.com/a/16732524/148844

person Chloe    schedule 24.09.2015