Php SQL Server:“仅Unicode排序规则中的Unicode数据或ntext数据…”问题,但无法更改FreeTDS版本
在尝试使用PHP从SQL Server数据库中选择nvarchar类型的列时,我遇到了一个熟悉的问题:Php SQL Server:“仅Unicode排序规则中的Unicode数据或ntext数据…”问题,但无法更改FreeTDS版本,php,sql-server,unicode,Php,Sql Server,Unicode,在尝试使用PHP从SQL Server数据库中选择nvarchar类型的列时,我遇到了一个熟悉的问题: Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. 我知道我可以使用SELECT CASTcolumnName as TEXT as columnName
Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.
我知道我可以使用SELECT CASTcolumnName as TEXT as columnName FORM tableName解决这个问题。。。但这很烦人。此外,只要出现此错误,Plus就无法工作,而且我无法将Adminer配置为强制转换其列名
在和中,许多人提到可以通过更改文件/etc/freetds.conf/来解决这个问题。。。但我在Windows上,不是*nix,所以不存在这样的文件。我联系了我的托管公司的支持人员以确认这一点
有没有什么方法可以让我选择nvarchar列而不必每次都添加烦人乏味的CAST样板文件?为了让管理员工作
或者是切换到DB Library之外的其他驱动程序的唯一选项?Windows解决方案:-
您可以始终使用Windows驱动程序连接到Mssql数据库。Windows的本机驱动程序是可用的,并且不难安装。如果需要的话,我可以发送
当你的机器是基于Linux的时候,我有一个连接到mssql的解决方案,我特别要说的是Centos。
我犯的错误是没有配置位于/etc/FreeTds.conf中的FreeTds
在Ubuntu系统的情况下,它不会出现在这里
勾选表示典型windows系统配置该部分的行
请在下面的一页中勾选
[connectionname]
host = **nameOrIpofTheServer**
port = 1433
tds version = 8.0
client charset = utf-8
在代码中使用连接名称。
注意:如果希望这些设置正常工作,请使用连接名称
PDO的连接对象将如下所示:-
$dbh = new PDO ("dblib:host=**$hostname**:$port;dbname=$dbname","$username","$pw"); //
总一
$dbh = new PDO ("dblib:host='**connectionname**':$port;dbname=$dbname","$username","$pw");
//具有连接名称的实际连接
现在尝试从mssql数据库中选择具有UTF-8字符的数据。
我会工作的
在此环境中工作时,您将面临的下一个问题是:-
将UTF-8字符保存到数据库。
一个简单但复杂的解决方案是,您必须在数据库查询前面加上前缀N,以便为字段赋值。
例如:-更新[users]设置[Address]=N'ббббббббб其中[ID]=1;
这里的地址是UTF-8字段。比如NTEXT、NCHAR和NVARCHAR。你解决了这个问题吗?我也有同样的问题,这个项目最终被放弃了。。。我一辈子都记不起我是否解决了这个问题。