获取常规错误:4004常规SQL Server错误:

时间:2016-04-05 14:03:47

标签: php sql-server pdo laravel-5

我正在尝试从Laravel中的数据库中获取数据,但是我得到一个"一般错误:4004常规SQL Server错误:"

我使用Laravel-5和MSSQL。 如果我使用DB对象从MSSQL获取数据,我无法获取xml和nvarchar字段,

我在下面找到了一个有用的链接,但要实现这一点,我必须重写我的所有查询。还有其他办法吗?

https://gullele.wordpress.com/2010/12/15/accessing-xml-column-of-sql-server-from-php-pdo

2 个答案:

答案 0 :(得分:2)

请尝试:

 $handle = getHandle();
 $handle->exec('SET QUOTED_IDENTIFIER ON');
 $handle->exec('SET ANSI_WARNINGS ON');
 $handle->exec('SET ANSI_PADDING ON');
 $handle->exec('SET ANSI_NULLS ON');
 $handle->exec('SET CONCAT_NULL_YIELDS_NULL ON');

OR

您还可以检查服务器配置: 检查“/etc/freetds.conf”文件并更改tds版本并在php.ini中添加客户端字符集,请检查mssql.charset和default_charset

/etc/freetds.conf中的

;tds version = 4.2
tds version = 8.0
client charset = UTF-8

在php.ini中:

mssql.charset = "UTF-8"
default_charset = "utf-8"

答案 1 :(得分:0)

其他人最重要的信息是问题的答案:错误4004(严重性16)是什么意思?

  

错误4004:只能使用DB-Library(例如ISQL)或ODBC 3.7或更早版本将纯Unicode排序规则或ntext数据中的Unicode数据发送到客户端。

Source

就我而言,在迁移到SQL Server 2016并设置了STUFF()之后,我不得不将VARCHAR(MAX)子句强制转换为tds version = 7.4以解决该错误。