我在使用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');
}
但是,错误仍然存在,我无法完成迁移。
答案 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, ...)