我正在尝试将Laravel项目的数据库使用SQL Server。我能够将SQL Server与Laravel 5.2连接。但是,当我尝试将数据植入表中时,出现此错误
[Illuminate\Database\QueryException] SQLSTATE[23000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Cann ot insert explicit value for identity column in table 'surveys' when IDENTITY_INSERT is set to OFF. (SQL: insert into [surveys] ([id], [name]) values (10, 'Some Text'))
注意:我正在尝试提供标识值,这可能是导致问题的原因。
在研究SQL错误时,我了解到我需要执行以下查询。
在播种之前,我需要执行
SET IDENTITY_INSERT surveys ON;
播种后,我需要执行
SET IDENTITY_INSERT surveys OFF;
但是我不确定如何使用Laravel执行这些命令
在没有出现此问题的情况下,如何在为身份列提供值时播种?
更新这是我的播种机
truncate(); DB::table($myTable)->insert([ 'id' => 10, 'name' => 'some name', ]); DB::statement('SET IDENTITY_INSERT ' . $myTable . ' OFF'); } }
Laurence.. 5
对于任何通过Google找到的人-新的正确答案是这样使用unprepared()
:
DB::beginTransaction(); DB::unprepared('SET IDENTITY_INSERT test ON'); DB::table('test')->insert(['id' => 1, 'name' => 'example']); DB::unprepared('SET IDENTITY_INSERT test OFF'); DB::commit();
正如在此问题线程上讨论的那样:https : //github.com/laravel/framework/issues/27778
对于任何通过Google找到的人-新的正确答案是这样使用unprepared()
:
DB::beginTransaction(); DB::unprepared('SET IDENTITY_INSERT test ON'); DB::table('test')->insert(['id' => 1, 'name' => 'example']); DB::unprepared('SET IDENTITY_INSERT test OFF'); DB::commit();
正如在此问题线程上讨论的那样:https : //github.com/laravel/framework/issues/27778