Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MS SQL server更新MySql_Mysql_Sql Server 2008_Linked Server_Openquery - Fatal编程技术网

从MS SQL server更新MySql

从MS SQL server更新MySql,mysql,sql-server-2008,linked-server,openquery,Mysql,Sql Server 2008,Linked Server,Openquery,我需要帮助来编写将从SQLServer更新MySql表的查询。 我已经创建了链接服务器和选择查询,但在执行更新时出现错误。我对编写此类查询非常陌生,所以请帮助我理解错误消息及其含义 我的更新查询: UPDATE openquery(stagedb_za, 'Select acm_flag FROM aol_center WHERE nid = 6439') Set acm_flag = 'P' 错误: 链接服务器“stagedb_za”的OLE DB提供程序“MSDASQL”返回消息“无法定

我需要帮助来编写将从SQLServer更新MySql表的查询。 我已经创建了链接服务器和选择查询,但在执行更新时出现错误。我对编写此类查询非常陌生,所以请帮助我理解错误消息及其含义

我的更新查询:

UPDATE openquery(stagedb_za, 'Select acm_flag FROM aol_center WHERE nid = 6439')
Set acm_flag = 'P' 
错误:

链接服务器“stagedb_za”的OLE DB提供程序“MSDASQL”返回消息“无法定位要更新的行。自上次读取后,某些值可能已更改。”。 信息7343,第16级,第4状态,第1行 链接服务器的OLE DB提供程序“MSDASQL”无法更新表“[MSDASQL]”。行集正在使用乐观并发,并且在上次获取或重新同步包含行后,列的值已更改

好的,我知道答案了。 当您更新列值时,如果新值与现有值相同,则会将其视为没有更改,因此不会发生更新


在我的例子中,我将acm_标志更新为'p',但它的值已经是'p',因此没有发生更新。当我尝试将其更新为不同的值时,效果很好

MySQL ODBC连接器上的一个设置解决了整个问题

在链接到MySQL的SQL Server上,进入链接服务器使用的MySQL ODBC连接的配置屏幕。打开“详细信息”。在“光标/结果”选项卡上。在“返回匹配的行而不是受影响的行”中打勾

在进行配置更改时,将MySQL字段值设置为其已有值的更新不会返回错误

在我在另一个论坛上发现这一点之前,我已经输入了大量代码,以逐个字段的方式过滤出有问题的值。这很容易