CodeIgniter/sqlsrv/MSSQL 更新查询包含 Id 列 - 错误

CodeIgniter/sqlsrv/MSSQL Update-Queries contain Id-column - Error

我很难将 WebApp 从 Unix/Apache/MySQL 系统迁移到 Win2012/Apache/MSSQL。首先,我安装了您需要的 sqlsrv-stuff 并且连接正常。 但: 更新查询会导致错误消息,例如

A Database Error Occurred

Error Number: 42000/8102

[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Die id-Identitätsspalte kann nicht aktualisiert werden." The last part basically means "The ID-identy column may not be updated."

生成的更新查询如下所示:

UPDATE "dbo"."table" SET "id" = 1, "someStuff" = 5 WHERE "id" = 1

我的模型使用如下语句:

$data = array (
   'someStuff' => (int) $stuff
);
$this->db->update('table',$data,"id = ".$itemID);

我理解该消息,因为该语句包含一个 SET "id",这显然是不相关的,因为 id 字段是在 mssql 中生成的自动递增的东西 - 如您所见,我没有将它包含在我的模型。如何让 CodeigniterUPDATE 语句减少为不包含主键?或者有其他简单的方法可以解决这个问题吗?

如果有帮助,我不妨修改 Codeigniter 以检查内部生成的查询是否包含 id 字段以跳过这些,因为它们始终是自动递增的主键,但我的尝试没有成功。

如果 id 是自动递增字段,请不要将其包含在 Codeigniter Insert/Update 查询中。它应该自动添加。只是 Insert/Update 数据库中的其他值 Rem:自动增量属性是在数据库级别设置的,而不是在 Codeigniter 上设置的。

正如我发现的那样,有人在迁移过程中进行了未记录的最后一刻更改,并发现数据数组不包含 id - 出于某种我永远无法理解的原因,他认为这将是一个很好的选择把它们放进去的想法。

抱歉造成混淆!

经验教训:

  1. CI 即使使用 SQLSRV 也能正常工作,

  2. 我必须确保我创建的代码按我希望的方式上传。