I have configuration with master-slave DB records.
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'enableSchemaCache' => true,
'masterConfig' => [
'username' => '1111',
'password' => '1111',
'charset' => 'utf8',
],
'masters' => [
['dsn' => 'mysql:host=111.111.111.111;dbname=1111'],
],
'slaveConfig' => [
'username' => '1111',
'password' => '1111',
'charset' => 'utf8',
],
'slaves' => [
['dsn' => 'mysql:host=localhost;dbname=1111'],
],
],
When MasterDB is unavailable I have 500 error on my site.
Do somebody know, how to avoid error 500, when master DB is unavailable?
Here is my application log:
2016-02-19 13:24:40 [176.104.168.2][-][-][error][yii\base\InvalidConfigException] exception 'yii\base\InvalidConfigException' with message 'None of the master DB servers is available.' in /var/www/112ua/vendor/yiisoft/yii2/db/Connection.php:518
Stack trace:
#0 /var/www/112ua/vendor/yiisoft/yii2/db/Connection.php(836): yii\db\Connection->open()
#1 /var/www/112ua/vendor/yiisoft/yii2/db/Connection.php(823): yii\db\Connection->getMasterPdo()
#2 /var/www/112ua/vendor/yiisoft/yii2/db/Connection.php(796): yii\db\Connection->getSlavePdo()
#3 /var/www/112ua/vendor/yiisoft/yii2/db/Connection.php(680): yii\db\Connection->getDriverName()
#4 /var/www/112ua/vendor/yiisoft/yii2/db/Connection.php(698): yii\db\Connection->getSchema()
#5 /var/www/112ua/vendor/yiisoft/yii2/db/ActiveQuery.php(324): yii\db\Connection->getQueryBuilder()
#6 /var/www/112ua/vendor/yiisoft/yii2/db/Query.php(206): yii\db\ActiveQuery->createCommand(NULL)
#7 /var/www/112ua/vendor/yiisoft/yii2/db/ActiveQuery.php(132): yii\db\Query->all(NULL)
#8 /var/www/112ua/frontend/components/Menu.php(18): yii\db\ActiveQuery->all()
#9 [internal function]: frontend\components\Menu->frontend\components\{closure}(Object(yii\db\Connection))
#10 /var/www/112ua/vendor/yiisoft/yii2/db/Connection.php(417): call_user_func(Object(Closure), Object(yii\db\Connection))
#11 /var/www/112ua/frontend/components/Menu.php(19): yii\db\Connection->cache(Object(Closure), 300)
#12 /var/www/112ua/vendor/yiisoft/yii2/base/Object.php(107): frontend\components\Menu->init()
#13 [internal function]: yii\base\Object->__construct(Array)
#14 /var/www/112ua/vendor/yiisoft/yii2/di/Container.php(366): ReflectionClass->newInstanceArgs(Array)
#15 /var/www/112ua/vendor/yiisoft/yii2/di/Container.php(151): yii\di\Container->build('frontend\\compon...', Array, Array)
#16 /var/www/112ua/vendor/yiisoft/yii2/BaseYii.php(344): yii\di\Container->get('frontend\\compon...', Array, Array)
#17 /var/www/112ua/vendor/yiisoft/yii2/di/ServiceLocator.php(133): yii\BaseYii::createObject(Array)
#18 /var/www/112ua/vendor/yiisoft/yii2/base/Application.php(302): yii\di\ServiceLocator->get('menu')
#19 /var/www/112ua/vendor/yiisoft/yii2/web/Application.php(63): yii\base\Application->bootstrap()
#20 /var/www/112ua/vendor/yiisoft/yii2/base/Application.php(267): yii\web\Application->bootstrap()
#21 /var/www/112ua/vendor/yiisoft/yii2/base/Object.php(107): yii\base\Application->init()
#22 /var/www/112ua/vendor/yiisoft/yii2/base/Application.php(206): yii\base\Object->__construct(Array)
#23 /var/www/112ua/frontend/web/index.php(17): yii\base\Application->__construct(Array)
#24 {main}