Intereting Posts
Как сделать единый вход с PHP? Как сделать аутентификацию с помощью SOAP? «Потерянное соединение с сервером MySQL» при попытке подключения к удаленному серверу MySQL Проверьте, является ли переменная допустимой датой с PHP css исчезает при попытке создать чистый URL-адрес PHP: вывод команды команды / Shell_exec в веб-браузере шаг копирования, написанный на stackoverflow, для установки FFMPEG на неработающий wamp Ларавель красноречиво считает соотношение preg_replace_callback требует, чтобы аргумент 2 был действительным обратным вызовом … Stuck! Какую из этих двух настроек базы данных я должен выбрать? PHP не загружает php_pgsql.dll в Windows При правильном использовании достаточно htmlspecialchars для защиты от всех XSS? PHP Firebird вставить blob-файл в базу данных apache внезапно прекратить работу Неэффективный SQL-запрос PHP показывает только значимые (отличные от нуля) десятичные знаки

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

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

Solutions Collecting From Web of "Как установить часовой пояс базы данных в application.ini"

Я отвечаю на свой вопрос, просто чтобы закрыть это, так как ответ уже находится в одном из исправлений.

 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'" 

Это работает для меня:

 resources.db.adapter = "Pdo_Mysql" resources.db.params.driver_options.1002 = "SET NAMES 'utf8', CHARACTER SET 'utf8', time_zone = 'Europe/London'" 

вы можете также рассмотреть возможность добавления его в свой загрузочный лоток:

 <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initTimeZone() { date_default_timezone_set('Asia/Manila'); } } 

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