2010-12-19 18 views
21

Zend Frameworkには、サーバーとは異なるタイムゾーンで実行する必要のあるアプリケーションがあります。 application.iniのデータベースサーバー(この場合は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'ような何かを行うことができます知っているが、私は本当に、configファイルでそれを実行する必要があります。

私の現在のオプションがあります。周りグーグル

EDIT

私はresources.db.params.driver_options.1002PDO::MYSQL_ATTR_INIT_COMMANDの値を設定する必要があることを見出しました。

したがってresources.db.params.driver_options.1002 = "SET NAMES utf8, time_zone = 'Europe/London'"です。しかし、これまで運がなかった。

FINAL EDIT

はそれを発見しました。私は私のapplication.iniでresources.db.params.charset = "utf8"を持っていたよう は、検索とデバッグに多くの後、私はそれがPDO::MYSQL_ATTR_INIT_COMMANDを上書きして、Zendの\ Dbの\アダプタ\ 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 
} 

に次のコードを見つけました。

その行を削除すると解決しました。

+0

ウェブサーバーとは異なりますか、またはMySQLサーバーとは異なりますか? –

+0

両方のサーバーと異なります。 – Esteban

答えて

14

私は自分の質問に答えるつもりです。これは、回答がすでに編集内容の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'" 
+1

「SET NAMES 'utf8'」に何か設定すると、503エラーが返されますか? –

0

これは私のために働く前派遣プラグインをビルドしてみて、クエリ

4

のための設定ファイルからデータを取得:

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

date_default_timezone_setは、mysqlサーバではなく、PHPのタイムゾーンを設定します。 phpSettings.date.timezone = application.iniの「Asia/Manila」 – Esteban

関連する問題