我在Zend Framework中有一个应用程序,它必须运行与服务器不同的时区。有没有在application.ini中设置数据库服务器(本例中为MySQL)时区的选项?如何在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'
,但我真的需要做的是在配置文件中。
编辑
周围的Googling我发现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 \适配器\ 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
。
删除该行解决了它。
不同于web服务器,还是不同于MySQL服务器? – 2010-12-19 20:42:21
与两台服务器不同。 – Esteban 2010-12-19 20:48:37