SQL Server错误1934发生在INSERT到表与计算列PHP / PDO上
发布时间:2020-12-12 06:49:04 所属栏目:MsSql教程 来源:网络整理
导读:将计算列添加到SQL Server 2005中的表后,我在INSERT上收到以下消息,仅通过 PHP(使用PDO)它在SQL Server Managment Studio中正常工作. 为了确保我的一切正确,我使用SQL Server Profiler设置了跟踪,并将INSERT语句复制/粘贴到SQL Server Managment Studio中.它
将计算列添加到SQL Server 2005中的表后,我在INSERT上收到以下消息,仅通过
PHP(使用PDO)它在SQL Server Managment Studio中正常工作.
为了确保我的一切正确,我使用SQL Server Profiler设置了跟踪,并将INSERT语句复制/粘贴到SQL Server Managment Studio中.它在SSMS中运行得很好,但在PHP中仍然失败.
解决方法原来问题与SET参数有关.我使用了从 Here获得的以下代码.确定在SQL Server Management Studio中设置了哪些选项(插入工作的位置).然后在插入语句之前将其中的每一个放在exec中会导致事情再次起作用.我不需要保留所有选项,所以下面我展示了使它工作所需的选项.DECLARE @options INT SELECT @options = @@OPTIONS PRINT @options IF ( (1 & @options) = 1 ) PRINT 'DISABLE_DEF_CNST_CHK' IF ( (2 & @options) = 2 ) PRINT 'IMPLICIT_TRANSACTIONS' IF ( (4 & @options) = 4 ) PRINT 'CURSOR_CLOSE_ON_COMMIT' IF ( (8 & @options) = 8 ) PRINT 'ANSI_WARNINGS' IF ( (16 & @options) = 16 ) PRINT 'ANSI_PADDING' IF ( (32 & @options) = 32 ) PRINT 'ANSI_NULLS' IF ( (64 & @options) = 64 ) PRINT 'ARITHABORT' IF ( (128 & @options) = 128 ) PRINT 'ARITHIGNORE' IF ( (256 & @options) = 256 ) PRINT 'QUOTED_IDENTIFIER' IF ( (512 & @options) = 512 ) PRINT 'NOCOUNT' IF ( (1024 & @options) = 1024 ) PRINT 'ANSI_NULL_DFLT_ON' IF ( (2048 & @options) = 2048 ) PRINT 'ANSI_NULL_DFLT_OFF' IF ( (4096 & @options) = 4096 ) PRINT 'CONCAT_NULL_YIELDS_NULL' IF ( (8192 & @options) = 8192 ) PRINT 'NUMERIC_ROUNDABORT' IF ( (16384 & @options) = 16384 ) PRINT 'XACT_ABORT' 以下是我最终需要的选项: $dbPDO->exec("SET ANSI_WARNINGS ON"); $dbPDO->exec("SET ANSI_PADDING ON"); $dbPDO->exec("SET ANSI_NULLS ON"); $dbPDO->exec("SET QUOTED_IDENTIFIER ON"); $dbPDO->exec("SET CONCAT_NULL_YIELDS_NULL ON"); 更新:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |