首页 文章

带有标识列的Microsoft SQL Server上的Yii2迁移问题

提问于
浏览
1

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

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

我在运行批处理插入语句之前包含了以下代码,以便打开 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

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

    SET IDENTITY_INSERT my_table ON;
    

    请确保您没有为您设置为indentity的列插入explict值 .

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

    例如:而不是这个

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

    尝试

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

相关问题