我正在尝试从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
答案 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
以解决该错误。