pra*_*ech 2 mysql linked-server openquery sql-server-2008
我需要帮助编写将从SQL服务器更新MySql表的查询.我创建了链接服务器和选择查询工作正常但我在更新时遇到错误.我真的很想写这种类型的查询,所以请帮助我理解错误信息及其含义.
我的更新查询:
UPDATE openquery(stagedb_za, 'Select acm_flag FROM aol_center WHERE nid = 6439')
Set acm_flag = 'P'
Run Code Online (Sandbox Code Playgroud)
错误:
用于链接服务器"stagedb_za"的OLE DB提供程序"MSDASQL"返回消息"无法找到行以进行更新.某些值自上次读取后可能已更改.".消息7343,级别16,状态4,行1链接服务器的OLE DB提供程序"MSDASQL"无法更新表"[MSDASQL]".行集使用了乐观并发,并且在上次提取或重新同步包含行之后,列的值已更改.
小智 8
整个问题随着MySQL ODBC连接器的设置而消失.
在链接到MySQL的SQL Server上,进入链接服务器使用的MySQL ODBC连接的配置屏幕.打开"详细信息".在"光标/结果"选项卡上.勾选"返回匹配的行而不是受影响的行".
进行该配置更改后,将MySQL字段值设置为已有值的更新将不会返回错误.
在我在另一个论坛上发现这个之前,我已经放了很多代码来逐个字段地过滤掉有问题的值.这很简单.
好的,我得到答案了。似乎当您更新列值时,如果新值与现有值相同,则将其视为没有更改,因此不会发生更新。
就我而言,我将 acm_flag 更新为“P”,但它的值已经是“P”,因此没有发生更新。当我尝试将其更新为不同的值时,它工作得很好。