0

我在 Microsoft SQL Server 2008 R2 SP1 中有一个使用 ODBC 连接到 MySQL 数据库的连接服务器。ODBC 驱动程序:Microsoft Windows Server 2008 R2 64 位上的 MySQL ODBC 5.2a

所有查询实际上都运行正常。也插入和更新。

问题是 BLOB 数据的更新。(图片, ...)

最初它有效,但当有更多数据时却没有。然后我限制了更新语句。

现在它甚至不适用于一张图片。

该表有 2540 个数据集。142 个数据集的 BLOB-Field = NULL

MySQL 表:

-ID int not null Primary Key
-ARTIKEL int 
-BILD blob

MySQL ODBC

http://vvcap.net/db/uXBos_1v0Sm4qk-lA6SD.png

参数 MSDAQL 在此处输入图像描述

参数 Verbindungsserver(在 MSSQL 中) 在此处输入图像描述

这是 SQL 查询:

update shop...EXTERN_BILDER 
set BILD = (select b.BILD from INTERN_BILDER b where b.ID = EXTERN_BILDER.ID)
where (BILD is null) AND (ID in (select ID from _temp_ID))

表 _temp_ID 具有要更新的 ID。我可以调整,多少。

这是连接服务器的 MSDASQL 错误shop(尽我所能从德语翻译):

未找到要更新的行。自上次读取以来修改了一些值。

消息 7343,级别 16,状态 4,第 2 行连接服务器“shop”的 OLE DB 提供程序“MSDASQL”无法对 [shop]...[extern_pictures] 表执行 UPDATE。对于行集,使用了完全并行性,并且在相应行最后一次读取或同步之后修改了行的值。

4

2 回答 2

0

我对德语一无所知,但如果这是一个ConcurrencyViolation问题,那么我知道可以将CommandObject' 的属性ConflictOption设置为ConflictOption.OverwriteChanges无论 DataSet 是否认为同时数据库已更新,都将更新数据库。

如果我没有正确解释您的问题,我深表歉意。

于 2013-06-15T17:21:53.917 回答
0

似乎您尝试更新在请求行时更改的记录中的行。尝试更改您的 ODBC 连接。

见 => http://dev.mysql.com/doc/refman/5.5/en/connector-odbc-errors.html

Write Conflicts or Row Location Errors

How do I handle Write Conflicts or Row Location errors?

If you see the following errors, select the Return Matching Rows option in the DSN configuration dialog, or specify OPTION=2, as the connection parameter:

Write Conflict. Another user has changed your data.

Row cannot be located for updating. Some values may have been changed
since it was last read.

德语:Hallo, es scheint als würdest Du Datensätze aktualisieren wollen, welche sich in der Zwischenzeit geändert haben。Du musst die ODBC Verbindung entsprechend einstellen, dass Du das UPDATE trotzdem ausführen kannst。Schaue Dir den Link an, dort steht, wie Du die ODBC Verbindung einstellen musst。

于 2013-06-15T17:38:34.480 回答