Как установить часовой пояс базы данных в application.ini
У меня есть приложение в 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
.
Удаление этой строки решило ее.
Ответы
Ответ 1
Я отвечаю на свой вопрос, чтобы закрыть это, так как ответ уже находится в одном из исправлений.
resources.db.params.charset
и
resources.db.params.driver_options.1002
как в моем приложении application.ini, нельзя использовать вместе, как resources.db.params.charset
ovewirites driver_options.1002
.
Если вам нужно установить часовой пояс, удалите resources.db.params.charset
и передайте часовой пояс в кодировке в driver_options
.
Например:.
resources.db.params.driver_options.1002 = "SET NAMES utf8, time_zone = 'Europe/London'"
Ответ 2
Это работает для меня:
resources.db.adapter = "Pdo_Mysql"
resources.db.params.driver_options.1002 = "SET NAMES 'utf8', CHARACTER SET 'utf8', time_zone = 'Europe/London'"
Ответ 3
вы можете также рассмотреть возможность добавления его в свой загрузочный файл:
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
protected function _initTimeZone() {
date_default_timezone_set('Asia/Manila');
}
}
Ответ 4
Попробуйте создать предварительный плагин отправки и получить данные из файла конфигурации для запроса