如何在应用程序中设置数据库时区.ini

2022-08-30 20:05:01

我在Zend Framework中有一个应用程序,它必须为与服务器不同的时区运行。是否有选项可以在应用程序中设置数据库服务器(在本例中为 MySQL)时区.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.1002PDO::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
}

正如我在应用程序中所做的那样.ini,它覆盖了 。resources.db.params.charset = "utf8"PDO::MYSQL_ATTR_INIT_COMMAND

删除该行解决了它。


答案 1

我回答我自己的问题只是为了结束这个,因为响应已经在其中一个编辑中。

resources.db.params.charset

resources.db.params.driver_options.1002

正如我在应用程序中所做的那样.ini不能一起使用,因为ovewiers。resources.db.params.charsetdriver_options.1002

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

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

答案 2

这对我有用:

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

推荐