链接服务器 "server" 的 OLE DB 访问接口 "MSDASQL" 无法 UPDATE 表 "[MSDASQL]"。行集正在使用乐观并发机制,而自上次提取或重新同步包含列值的行后,该列值又有更改。
链接服务器"server"的 OLE DB 访问接口 "MSDASQL" 返回了消息 "无法为更新定位行。一些值可能已在最后一次读取后已更改。"。经过测试如果在本地的mysql里更新一条数据,如果更新命令是:update 表名 set 列名 = 更新值 where 条件 = 条件
执行第一次的时候没有问题,执行第二次的时候影响行数的0,但是要在远程调用的话,就会报上面的错误,我的意思是,可不可以不让他报以上的错误,或者说在mysql里那里可以设置,请高手帮帮忙。

解决方案 »

  1.   

    是用MYODBC连的吗?
    flag中有return matching rows 这项 应该打勾
    对应连接字符串中的option值 +2
      

  2.   

    update IGNORE 表名 set 列名 = 更新值 where 条件 = 条件
      

  3.   


    我是用的myodbc  ,对应的连接字符串option值+2 什么意思?在哪里呢?
      

  4.   


    我现在的做法是,用sql server 数据库远程连接 mysql 数据库,在程序里调用sql server 存储过程(存储过程里用的是openquery函数,查询的是mysql数据库里的表),
      

  5.   


    ignore  是mysql里的关键字
      

  6.   

    如果用MYODBC 的DSN的话,请进入ODBC配置栏, 将flag中有return matching rows 这项 打勾 如果用MYODBC的连接字符串,请将OPTION值 加 2
     "driver={MySQL ODBC 3.51 driver},server=xxx,db=xxx,uid=xxx,pwd=xxx,option=3"
    (备注,每个选项对应option一个值,如1,2,4,8..., 选中某个就加某个值)你可能是用DSN.
      

  7.   


    恩 是的我用的是 DSN ,谢谢你的帮助,能不能详细一点给我说说那个option = 几,我还是没有搞明白,但是现在还在我测试了还是没有解决问题啊,还是同样的问题
      

  8.   

    看MYSQL-ODBC帮助
    http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-connection-parameters.html
      

  9.   

    trainee 是高手,我的问题也解决了。