У меня есть приложение в Zend Framework, которое должно выполняться для другого часового пояса, чем сервер. Есть ли возможность установить часовой пояс сервера базы данных (MySQL в этом случае) в application.ini?
Мои текущие параметры:
resources.db.adapter = "Pdo_Mysql"
resources.db.params.charset = "utf8"
resources.db.params.driver_options.1002 = "SET NAMES utf8"
resources.db.params.host = "localhost"
resources.db.params.username = "usernam"
resources.db.params.password = "password"
resources.db.params.dbname = "databasename"
Я знаю, что могу сделать что-то вроде SET timezone = 'Europe/London'
, но мне действительно нужно сделать это в файле конфигурации.
ИЗМЕНИТЬ
Подойдя к поиску, я обнаружил, что resources.db.params.driver_options.1002
должен установить значение для PDO::MYSQL_ATTR_INIT_COMMAND
.
Поэтому resources.db.params.driver_options.1002 = "SET NAMES utf8, time_zone = 'Europe/London'"
должен сделать трюк. Но пока не повезло.
ОКОНЧАТЕЛЬНОЕ ИЗОБРАЖЕНИЕ
Нашел. После многого поиска и отладки я нашел следующий код в Zend\Db\Adapter\Pdo\Mysql.php
if (!empty($this->_config['charset'])) {
$initCommand = "SET NAMES '" . $this->_config['charset'] . "'";
$this->_config['driver_options'][1002] = $initCommand; // 1002 = PDO::MYSQL_ATTR_INIT_COMMAND
}
Поскольку у меня есть resources.db.params.charset = "utf8"
в моем приложении application.ini, это была перезапись PDO::MYSQL_ATTR_INIT_COMMAND
.
Удаление этой строки решило ее.