我在codeigniter中使用sql server数据库驱动程序,我正在执行以下查询:
select A.inst_name,Substring((Select ',' + cast(B.program_id as varchar(15))
From k12_dms_inst_programs B
Where B.inst_id=A.id For XML Path('')),2,8000) As EmployeeList
From k12_dms_institution_master A
Group by A.inst_name,A.id
在 SSMS 中完全正常。
但是当我尝试使用Codeigniter执行相同的查询时,我收到以下错误: -
使用 DB-Library (例如ISQL)或 ODBC 3.7或更早版本时,无法将仅限Unicode的归类或ntext数据中的Unicode数据发送给客户端。< / p>
答案 0 :(得分:1)
在php.net上找到一些解决方案
MSSQLNewbie 19-Sep-2011 06:34
In /etc/freetds/freetds.conf add these two lines (last two):
[global]
;tds version = 4.2
tds version = 8.0
client charset = UTF-8
You can edit "charset" in php.ini too (but you don't need if you did it previously in freetds.conf):
; Specify client character set..
; If empty or not set the client charset from freetds.comf is used
; This is only used when compiled with FreeTDS mssql.charset = "UTF-8"
Use nchar/nvarchar/ntext column types if you need unicode support.
dann dot farquhar at iteams dot org 24-Sep-2009 11:45
I found that changing the version in /etc/freetds.conf from 4.2 to 8.0
fixes this problem without having to make any changes to the SELECT
statement
huberkev11 at hotmail dot com 12-May-2006 01:47
This is because you are using column types of like ntext instead of
text. There are 2 solutions.
1 Change all ntext column types to text or
2 Your query must look like: SELECT CAST(field1 AS TEXT) AS field1 FROM table
希望他们能提供帮助。