Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd SQL Server 1934 występuje przy INSERT do tabeli z obliczoną kolumną PHP/PDO

Okazuje się, że problem dotyczył parametrów SET. Użyłem poniższego kodu uzyskanego z Tu . Aby określić, które opcje zostały ustawione w SQL Server Management Studio (gdzie działała wstawka). Następnie umieszczenie każdego z nich w exec przed moją instrukcją wstawiania spowodowało, że wszystko znowu działało. Nie musiałem zachowywać wszystkich opcji, więc poniżej przedstawiam te, które były wymagane do działania.

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'

Oto opcje, których potrzebowałem:

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

Aktualizacja:Wygląda na to, że ograniczenia FK spowodowały następujący błąd. Powyższe naprawiło również ten błąd.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć spacje nierozdzielające z kolumny na serwerze SQL?

  2. T-SQL BETWEEN problem maksymalna wartość najpierw

  3. Kolejność warunkowa T-SQL według

  4. Przesyłanie pliku z programu Access do SQL Server z kodem DAO — błąd wymagany obiekt

  5. SQL Server:wybierz najnowsze wiersze, których suma pasuje do wartości