带有标识列

时间:2017-06-19 03:42:36

标签: sql-server yii2 migration

我在使用Yii2迁移与MS SQL Server时遇到问题。迁移脚本在MySQL数据库中运行良好。但是,当我在MS SQL Server上运行迁移时,显示以下错误:

  

[Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]无法在表格中插入标识列的显式值' my_table'当IDENTITY_INSERT设置为OFF时。

我在运行批量插入语句之前已经包含以下代码,以便打开IDENTITY_INSERT

if ($this->db->driverName === 'sqlsrv' || $this->db->driverName === 'dblib' || $this->db->driverName === 'mssql') { $this->execute('SET IDENTITY_INSERT {{%my_table}} ON'); }

但是,错误仍然存​​在,我无法完成迁移。

1 个答案:

答案 0 :(得分:0)

确保执行设置为ON的命令..并且执行的代码完全符合您的需要..为此您可以尝试从sql控制台执行...而不是在迁移中执行.. < / p>

SET IDENTITY_INSERT my_table ON;  

请确保您没有为您设置为indentity的列插入明确值。

尝试使用不带缩进列名称和相关值的插入

例如:而不是这个

INSERT my_table (my_identity_column, col2, col3, ...)
VALUES (my_identity_value, col2value, col3value, ...)

尝试

INSERT my_table ( col2, col3, ...)
VALUES ( col2value, col3value, ...)