sql >> Database >  >> RDS >> Sqlserver

SQL Server-fout 1934 treedt op bij INSERT in tabel met berekende kolom PHP/PDO

Blijkt dat het probleem te maken had met de SET-parameters. Ik heb de onderstaande code gebruikt die is verkregen van Hier . Om te bepalen welke opties zijn ingesteld in SQL Server Management Studio (waar de insert werkte). Vervolgens zorgde het plaatsen van elk van deze in een exec voorafgaand aan mijn insert-instructie ervoor dat de dingen weer werkten. Ik hoefde niet alle opties te behouden, dus hieronder laat ik de opties zien die nodig waren om het werkend te krijgen.

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'

Dit zijn de opties die ik uiteindelijk nodig had:

$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:het lijkt erop dat FK-beperkingen hebben geleid tot de volgende fout. Het bovenstaande loste deze fout ook op.



  1. Toegang tot JavaScript-variabelen in php om op te slaan in mysql

  2. dubbele null-waardeschending op UNIQUE KEY-beperking in Mssql

  3. Hoe dubbele vermeldingen in een MySQL-database te vermijden zonder een fout te veroorzaken

  4. Opnieuw en opnieuw! Terugkerende gebeurtenissen in een gegevensmodel beheren