Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка 1934 на SQL Server възниква при INSERT към таблица с изчислена колона PHP/PDO

Оказа се, че проблемът е свързан с параметрите SET. Използвах кода по-долу, получен от Тук . За да определите кои опции са зададени в 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 са довели до следната грешка. Горното поправи и тази грешка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. няма sqljdbc_auth в java.library.path

  2. Филтриране на SQL Server 2008

  3. Как да разделите стойност, разделена със запетая, на колони

  4. Как да създадете ограничение на външния ключ с ON UPDATE CASCADE в SQL Server - SQL Server / TSQL Урок, част 79

  5. Как да активирате RPC Out с помощта на T-SQL