gpt4 book ai didi

mysql - 从 mssql 服务器更新链接服务器上的 mysql 表时出错

转载 作者:行者123 更新时间:2023-11-29 12:40:00 26 4
gpt4 key购买 nike

当我尝试通过 mssql 服务器上的过程更新链接服务器上的客户表时,出现以下错误:

 OLE DB provider "MSDASQL" for linked server "PRESTA" returned message "Row cannot be located for   updating. Some values may have been changed since it was last read.".
Msg 7343, Level 16, State 4, Line 1
The OLE DB provider "MSDASQL" for linked server "PRESTA" could not UPDATE table "[PRESTA].. [prs_customer]". The rowset was using optimistic concurrency and the value of a column has been changed after the containing row was last fetched or resynchronized.

我 100% 确定我尝试放入“客户”表的生日列中的值与其中已有的值不同:

UPDATE PRESTA...prs_customer

SET birthday = @birthday
WHERE id_customer = @id_customer

显示此错误只是因为生日列中已有的值为:“0000-00-00”,并且不为空。当我直接在数据库中将其更改为真正的 NULL 时,我的过程可以正常工作,并且不会给出任何错误。

此外,这两个值都是 DATE 类型,具有相同的格式,因此这不是问题。

我对此感到困惑,所以有人请详细说明吗?

最佳答案

请阅读错误消息。链接服务器正在使用乐观并发。因此,通过 OLE DB 层中的游标读取记录。当您尝试执行更新时,数据已更改。乐观意味着在进行更新之前使用锁定。

您确定这是准确的 SQL 语句吗?
是否有任何其他进程可能会在更新期间更改 ID?

查看 MS Press 的 ADO 书籍。

http://web.archive.org/web/20021222065228/http://www.microsoft.com/mspress/books/sampchap/3445.asp

它显示了您遇到的相同错误。

除非它是 OLE DB 提供程序或 MySQL 中的错误,否则在我看来这是一个锁定问题。

你能将锁定级别提高到悲观吗?如果这样做,您将必须在代码中处理阻塞。

我还会在 MySQL 中运行跟踪,以查看哪些语句正在访问数据库引擎。

真诚的

约翰

关于mysql - 从 mssql 服务器更新链接服务器上的 mysql 表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26253159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com