SQL Server错误1934年在INSERT发生与计算列PHP / PDO表(SQL Serve

2019-08-31 08:53发布

在SQL Server 2005中添加一个计算列一个表后我收到以下消息INSERT (使用PDO),只能通过PHP它在SQL Server枭雄工作室工作的罚款。

为了确保我拥有了一切正确的我的设置与SQL Server探查和副本跟踪/粘贴的INSERT语句到SQL Server枭雄工作室。 它跑在SSMS就好了,但继续PHP失败。

错误添加联系人:SQLSTATE [HY000]:常规错误:1934年常规SQL Server错误:从SQL Server查看信息[1934年](严重性16)(空)

Answer 1:

原来,问题曾与设定参数做。 我用下面从所获得的代码在这里 。 为了确定哪些选项是在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");

更新:看来FK约束导致下面的错误。 上述固定此误差为好。

SQLSTATE [HY000]:常规错误:8624常规SQL Server错误:检查从SQL Server消息[8624](严重性16)(空)



Answer 2:

继@kackleyjm回答我试图激活较少的选项可能。

我结束了:

SET ANSI_WARNINGS ON
SET ANSI_PADDING ON
SET CONCAT_NULL_YIELDS_NULL ON

这奏效了我



Answer 3:

我发现当你在使用XML批量插入或更新出现此问题sql server 。 我发现这个问题在一个表中的索引方面的问题。 校验

`IF (SELECT SESSIONPROPERTY('ARITHABORT')) = 0 and SET ARITHABORT ON;` 

在过程本体的顶部。 这将解决"1934"的错误。



文章来源: SQL Server error 1934 occurs on INSERT to table with computed column PHP/PDO