[php] application.iniでデータベースのタイムゾーンを設定する方法


1 Answers

これは私のために働く:

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

Zend Frameworkには、サーバーとは異なるタイムゾーンで実行する必要のあるアプリケーションがあります。 application.iniのデータベースサーバー(この場合はMySQL)のタイムゾーンを設定するオプションはありますか?

私の現在の選択肢は:

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'ようなことをすることができますが、設定ファイルで実際に行う必要があります。

EDIT

私は、 resources.db.params.driver_options.1002PDO::MYSQL_ATTR_INIT_COMMAND値を設定する必要があることを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
}

私のapplication.iniにresources.db.params.charset = "utf8"があるので、 PDO::MYSQL_ATTR_INIT_COMMAND上書きしていPDO::MYSQL_ATTR_INIT_COMMAND

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




プレディスパッチプラグインをビルドし、クエリの設定ファイルからデータを取得してみてください




Related