如何在application.ini中设置数据库时区 [英] How to set database time zone in 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屋!