SQL Server error 1934 occurs on INSERT to table with computed column PHP/PDO

前端 未结 3 864
粉色の甜心
粉色の甜心 2020-12-03 23:00

After adding a computed column to a table in SQL Server 2005 I am getting the following message on INSERT, only via PHP (using PDO) it\'s working fine in SQL Se

3条回答
  •  悲哀的现实
    2020-12-03 23:42

    Turns out the problem had to do with the SET parameters. I used the code below obtained from Here. To determine which options were set in SQL Server Management Studio (where the insert worked). Then placing each of those in an exec prior to my insert statement caused things to work again. I didn't need to keep all the options, so below I show the ones which were required to get it working.

    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'
    

    Here are the options I ended up needing:

    $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");
    

    Update: It seems FK constraints resulted in the following error. The above fixed this error as well.

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

提交回复
热议问题