小编Est*_*ban的帖子

如何在application.ini中设置数据库时区

我在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"
Run Code Online (Sandbox Code Playgroud)

我知道我可以做类似的事情SET timezone = 'Europe/London',但我真的需要在配置文件中做到这一点.

编辑

谷歌搜索我发现resources.db.params.driver_options.1002应该设置值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
}
Run Code Online (Sandbox Code Playgroud)

就像我resources.db.params.charset = "utf8"在我的application.ini中一样,它被覆盖了PDO::MYSQL_ATTR_INIT_COMMAND.

删除该行解决了它.

php mysql zend-framework

21
推荐指数
1
解决办法
7582
查看次数

标签 统计

mysql ×1

php ×1

zend-framework ×1