我在配置文件中设置了数据库连接,如果我打印出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',
)
答案 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',
)