prince
(Ice42)
1
问题:YII连接SQL SERVER,如果设置字符编码就报错。
配置文件:
'db'=>array(
'connectionString' => 'mssql:host=localhost;dbname=mydb',
'username' => 'myuser',
'password' => 'mypass',
'charset' => 'utf8',
'tablePrefix' => 'tbl_',
),
报错:
2010/04/12 16:07:53 [error] [exception.CDbException] exception ‘CDbException’ with message 'CDbConnection 无法开启数据库连线: SQLSTATE[HY000]: General error: 10007 ‘NAMES’ 不是可以识别的 SET 选项。 [10007] (severity 5)
版本:
2010-04-12 16:07:53 Apache/2.2.14 (Win32) PHP/5.2.6 Yii Framework/1.1.2-dev
Microsoft SQL Server 2008 Enterprise Edition
prince
(Ice42)
2
By the way. “SET NAMES UTF8” 是 MySQL Only 吧。connectionString写的是SQL Server的连接字符串。Yii就不应该用 “SET NAMES UTF8” 语句吧?或者在API文档注明charset属性是 MySQL Only . 
qiang
(Qiang Xue)
4
SQL SERVER对应的应该是什么语句呢?我原先查过发现SET NAMES是标准SQL的,不过手头没有SQL SERVER,所以没法测试。
如果你知道用什么SQL语句设置charset,你可以配置initSQLs来实现。
prince
(Ice42)
5
谢谢Qiang的解答。我查了一下,SQL SERVER 不支持 SQL设置charset。
SQLSERVER的字符集应该是指排序规则名称,在新建立数据库时,会让你选择排序规则名称,如果没有选,则是按默认的Chinese_PRC_CI_AS
使用SQL SERVER的时候不能在配置文件中设置charset。这与PHP无关,完全是SQL SERVER的问题。