sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server-fejl 1934 opstår på INSERT til tabel med beregnet kolonne PHP/PDO

Det viste sig, at problemet havde at gøre med SET-parametrene. Jeg brugte koden nedenfor hentet fra Her . For at bestemme, hvilke indstillinger der blev indstillet i SQL Server Management Studio (hvor indsættelsen fungerede). At placere hver af dem i en exec før min indsættelseserklæring fik tingene til at fungere igen. Jeg behøvede ikke at beholde alle mulighederne, så nedenfor viser jeg dem, der var nødvendige for at få det til at fungere.

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'

Her er de muligheder, jeg endte med at få brug for:

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

Opdatering:Det ser ud til, at FK-begrænsninger resulterede i følgende fejl. Ovenstående løste også denne fejl.



  1. Forøg feltet i mysql-databasen ved hjælp af codeigniters aktive registreringssyntaks

  2. Bitvis eksklusiv ELLER i Oracle

  3. Hvor sund er din SQL-server? Proaktiv databaseovervågning er kritisk

  4. Sådan sletter du alle begivenheder i MySQL