如何在application.ini中设置数据库时区 [英] How to set database time zone in application.ini

查看:169
本文介绍了如何在application.ini中设置数据库时区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Zend Framework中有一个应用程序,该应用程序必须在与服务器不同的时区运行.是否可以在application.ini中设置数据库服务器(在这种情况下为MySQL)时区?

I have an application in Zend Framework that has to run for a different time zone than the server. Is there an option to set the database server (MySQL in this case) time zone in 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'的操作,但是我确实需要在配置文件中进行操作.

I know I can do something like SET timezone = 'Europe/London', but I really need to do it in the config file.

编辑

在Google上四处搜寻,我发现resources.db.params.driver_options.1002应该为PDO::MYSQL_ATTR_INIT_COMMAND设置值.

Googling around I found that resources.db.params.driver_options.1002 should be setting the value for PDO::MYSQL_ATTR_INIT_COMMAND.

因此resources.db.params.driver_options.1002 = "SET NAMES utf8, time_zone = 'Europe/London'" 应该可以解决问题.但是到目前为止还没有运气.

Therefore resources.db.params.driver_options.1002 = "SET NAMES utf8, time_zone = 'Europe/London'" should do the trick. But no luck so far.

最终编辑

找到了. 经过大量搜索和调试后,我在Zend \ Db \ Adapter \ Pdo \ Mysql.php

Found it. After a lot of searching and debugging I found the following code at 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.

As I have resources.db.params.charset = "utf8" in my application.ini, it was overwriting PDO::MYSQL_ATTR_INIT_COMMAND.

删除该行即可解决.

推荐答案

我正在回答我自己的问题以结束此问题,因为响应已在其中一项编辑中.

I'm answering my own question just to close this, as the response is already in one of the edits.

resources.db.params.charset

resources.db.params.driver_options.1002

就像我在application.ini中一样.不能像resources.db.params.charset ovewirites driver_options.1002那样一起使用.

as I had in my application.ini cannot be used together, as resources.db.params.charset ovewirites driver_options.1002.

如果需要设置时区,请删除resources.db.params.charset并在driver_options中的字符集中传递时区. 例如:

If you need to set the timezone, remove resources.db.params.charset and pass the timezone in the charset in driver_options. E.g.:

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

这篇关于如何在application.ini中设置数据库时区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆