postgresql连接错误

在yii shell里创建model时遇到奇怪的错误,如果在db中我设置了'charset'=>'UTF8',就会出现

Quote

exception 'CDbException' with message 'CDbConnection failed to open the DB connection: SQLSTATE[42601]: Syntax error: 7 错误:  语法错误 在 "$1" 或附近的

LINE 1: SET NAMES $1

                  ^' in /var/framework/db/CDbConnection.php:248

一旦取消charset就连接正常

yii 1.07  postgresql 8.3.7  php 5.2.6



		'db'=>array(


                        'class'=>'CDbConnection',


			'connectionString'=>'pgsql:host=localhost;dbname=mydb',


                        'username'=>'myname',


                        'password'=>'mypass',


                        'charset'=>'UTF8',





		),


这说明你的pgsql不支持绑定动态参数(比较奇怪,因为pgsql通常是没这个问题的)。

已经找到原因了,是因为在Postgresql中SET NAMES 后的参数需要用引号或单引号标识为字符串。

格式为:SET NAMES ‘value’;(http://www.postgresq…/multibyte.html)

将framework/db/CDbConnection.php中的301行从

$stmt=$pdo->prepare('SET NAMES ?');

改为

$stmt=$pdo->prepare('SET NAMES "?"');

就好了,可能是由于postgresql的格式检查比较严格的原因?

感谢Qiang

这样改的确能解决问题(实际上我已经在svn里这样改了)。

但你这里的问题是没法绑定参数。同样的配置我在其它服务器上是可以的。

所以我估计你以后还会碰到类似的参数绑定问题。

刚才测试了一下,参数绑定也可以用,真怪,我再观察观察,谢谢啦