让Yii与SQL Server很好地配合

时间:2012-07-13 01:20:29

标签: sql-server yii

我在配置文件中设置了数据库连接,如果我打印出Yii :: app()的内容,我可以找到数据库连接的详细信息,它们是正确的。

然而,当尝试使用Gii模型生成器工具时,它会落在我身上。

53    public function init() {
54 echo '<pre>';
55 print_r(Yii::app()->db);
56 echo '</pre>';
57 die();
58 Yii::app()->db = array(
59             'connectionString' => 'sqlsrv:Server=sti-hq2k8; Database=TrulinXLive',
60             'username' => 'jzumbrum',
61             'password' => 'my_super_secret_password',
62         'charset' => 'utf8',
63         'tablePrefix' => 'tbl',
64         );
65         if(Yii::app()->db===null)
66             throw new CHttpException(500,'An active "db" connection is required to run this generator.');

异常消息:

CDbConnection failed to open the DB connection: SQLSTATE[IMSSP]: The given attribute is only supported on the PDOStatement object. 

配置设置:

'db'=>array(
        'connectionString' => 'sqlsrv:Server=servername; Database=database',
        'username' => 'jzumbrum',
        'password' => 'password',
        'charset' => 'GB2312',
        'tablePrefix' => 'tbl',
    )

2 个答案:

答案 0 :(得分:4)

根据我的记忆,我认为一旦禁用模拟准备语句,我就停止了问题:

'db'=>array(
    'connectionString' => 'sqlsrv:Server=servername; Database=database',
    'username' => 'jzumbrum',
    'password' => 'password',
    'charset' => 'GB2312',
    'tablePrefix' => 'tbl',
    'emulatePrepare' =>false
)

此处提供的其他可能的问题/解决方法:http://www.yiiframework.com/forum/index.php/topic/17998-use-sqlsrv-with-php-53x-and-yii/

答案 1 :(得分:0)

显然,问题是我可以连接到localhost上的sql server。虽然我并不熟悉这台服务器是如何设置的,但我很确定我在不同的机器上,所以他们必须有一些疯狂的隧道或设置。

我觉得奇怪的是,当我输入错误的密码时,它告诉我有连接错误,但是当我指定错误的服务器地址时,它给了我另一个错误。也许它正在解决,只是还有其他东西阻挡它。

配置更改为:

'db'=>array(
    'connectionString' => 'sqlsrv:Server=localhost; Database=database',
    'username' => 'jzumbrum',
    'password' => 'password',
    'charset' => 'GB2312',
    'tablePrefix' => 'tbl',
)