问题 PHP / PDO / MSSQL如何获取错误信息?


我做了很多搜索,但找不到任何有关我的问题的信息。我在用着 PDO 与司机 PDO_DBLIB 访问MS SQL数据库。我通常使用预准备语句,但如果任何查询失败,我不会获得有关错误的任何其他信息,除非:

General SQL Server error: Check messages from the SQL Server [241] (severity 16) [(null)]

有没有人提示如何检索有关错误的更多信息(语法错误在......)?

最好的祝福

迈克尔


12740
2018-03-31 09:10


起源



答案:


要查找错误消息:

-- SQL 2005+
select * from sys.messages where message_id = 241
-- SQL 2000
select * from sysmessages where error = 241

由于某种原因,PDO似乎正在删除实际的错误消息文本 文件 说PDO_DBLIB是实验性的,这可能只是一个bug。

您还应该知道DBLIB已经存在 弃用 自SQL 2005以来,Microsoft几乎肯定会使用不同的库来连接到MSSQL。


14
2018-03-31 09:54



AFAIK,MS的驱动程序适用于Windows。 - d-_-b
@sims是的,所有Microsoft SQL Server驱动程序都是仅限Windows的(JDBC驱动程序除外),尽管由于OP没有提及他的操作系统甚至SQL Server版本,因此很难知道他的方案的最佳答案是什么。 - Pondlife
是的,我只是觉得我会为找到这个页面的其他人说清楚。 - d-_-b
有没有办法获取上下文参数?例: Conversion failed when converting the %1 value %2 to data type %3. - Pierre de LESPINAY


答案:


要查找错误消息:

-- SQL 2005+
select * from sys.messages where message_id = 241
-- SQL 2000
select * from sysmessages where error = 241

由于某种原因,PDO似乎正在删除实际的错误消息文本 文件 说PDO_DBLIB是实验性的,这可能只是一个bug。

您还应该知道DBLIB已经存在 弃用 自SQL 2005以来,Microsoft几乎肯定会使用不同的库来连接到MSSQL。


14
2018-03-31 09:54



AFAIK,MS的驱动程序适用于Windows。 - d-_-b
@sims是的,所有Microsoft SQL Server驱动程序都是仅限Windows的(JDBC驱动程序除外),尽管由于OP没有提及他的操作系统甚至SQL Server版本,因此很难知道他的方案的最佳答案是什么。 - Pondlife
是的,我只是觉得我会为找到这个页面的其他人说清楚。 - d-_-b
有没有办法获取上下文参数?例: Conversion failed when converting the %1 value %2 to data type %3. - Pierre de LESPINAY


SQL Server错误消息

错误241:从字符串转换datetime的语法错误

这种格式适合我: date("Ymd H:i:s");


1
2018-03-04 10:01