Laravel SQL Server Insert Error -


i using laravel's sql server driver eloquent , attempt read , write database.

i able read data database.

i able save database if paste query directly database client (navicat).

however when attempt insert data via eloquent error.

//returns valid results $results = db::connection('next')->table('cms_tree')->get();  //throws exception $sql = "insert cms_tree (             [nodealiaspath], [nodename], [nodealias], [nodeclassid], [nodelevel], [nodesiteid], [nodeguid]         ) values (             '/home', 'home', 'home', 1095, 1, 1, '17b28018-c4dc-4896-adac-29f1e35b69ba'         )";  $result = db::connection('next')->statement($sql); 

the exception message:

general error: 1934 general sql server error: check messages sql server [1934] (severity 16) [(null)]

my research on error suggests there issue in how sending data, i'm unsure how simplify further.


schema:

enter image description here

i able solve in 2 parts.

first, needed debug "set" parameters client sending in background along sql to server. hidden set parameters why insert worked via client, not php code. answer shows how determine set parameters need add:

sql server error 1934 occurs on insert table computed column php/pdo

second, before run insert command, manually need pass these "set" parameters. need run block of code 1 time before 1 or multiple inserts. in case, looks this:

$pdo = db::connection('my-db-config-key')->getpdo(); $pdo->exec('set ansi_warnings on'); $pdo->exec('set ansi_padding on'); $pdo->exec('set ansi_nulls on'); $pdo->exec('set arithabort on'); $pdo->exec('set quoted_identifier on'); $pdo->exec('set ansi_null_dflt_on on'); $pdo->exec('set concat_null_yields_null on'); $pdo->exec('set xact_abort on');  //run 1 or multiple inserts here 

Comments