Подтвердить что ты не робот

Как установить часовой пояс базы данных в 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.

Удаление этой строки решило ее.

4b9b3361

Ответ 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

Попробуйте создать предварительный плагин отправки и получить данные из файла конфигурации для запроса