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 中生成的自动递增的东西 - 如您所见,我没有将它包含在我的模型。如何让 Codeigniter
将 UPDATE
语句减少为不包含主键?或者有其他简单的方法可以解决这个问题吗?
如果有帮助,我不妨修改 Codeigniter
以检查内部生成的查询是否包含 id
字段以跳过这些,因为它们始终是自动递增的主键,但我的尝试没有成功。
如果 id 是自动递增字段,请不要将其包含在 Codeigniter Insert/Update 查询中。它应该自动添加。只是 Insert/Update 数据库中的其他值
Rem:自动增量属性是在数据库级别设置的,而不是在 Codeigniter 上设置的。
正如我发现的那样,有人在迁移过程中进行了未记录的最后一刻更改,并发现数据数组不包含 id - 出于某种我永远无法理解的原因,他认为这将是一个很好的选择把它们放进去的想法。
抱歉造成混淆!
经验教训:
CI 即使使用 SQLSRV 也能正常工作,
我必须确保我创建的代码按我希望的方式上传。
我很难将 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 中生成的自动递增的东西 - 如您所见,我没有将它包含在我的模型。如何让 Codeigniter
将 UPDATE
语句减少为不包含主键?或者有其他简单的方法可以解决这个问题吗?
如果有帮助,我不妨修改 Codeigniter
以检查内部生成的查询是否包含 id
字段以跳过这些,因为它们始终是自动递增的主键,但我的尝试没有成功。
如果 id 是自动递增字段,请不要将其包含在 Codeigniter Insert/Update 查询中。它应该自动添加。只是 Insert/Update 数据库中的其他值 Rem:自动增量属性是在数据库级别设置的,而不是在 Codeigniter 上设置的。
正如我发现的那样,有人在迁移过程中进行了未记录的最后一刻更改,并发现数据数组不包含 id - 出于某种我永远无法理解的原因,他认为这将是一个很好的选择把它们放进去的想法。
抱歉造成混淆!
经验教训:
CI 即使使用 SQLSRV 也能正常工作,
我必须确保我创建的代码按我希望的方式上传。