MySQL链接服务器无法更新longtext

时间:2018-08-04 15:15:40

标签: mysql linked-server openquery

我有一个从SQL Server到我的mySQL数据库的链接服务器(使用MySQL ODBC Driver 5.3的Windows Server)。我有一种特殊的情况,如果我将其长文本列转换为OPEN QUERY,则只能返回它们:

SELECT * 
FROM
OPENQUERY (woocommerce, 'SELECT meta_id, CONVERT(meta_value using UTF8) as meta_value
                         FROM woocommerce.wp_postmeta WHERE meta_id = 9465078') 

如果不进行转换/广播,则会从链接服务器收到以下错误:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "woocommerce" reported an error. The provider reported an unexpected catastrophic failure.

我需要更新此longtext列“ meta_value”,但是由于它已被强制转换/转换,所以我不能。

    UPDATE 
    OPENQUERY (woocommerce, 'SELECT meta_id, CONVERT(meta_value using utf8) 
                             FROM woocommerce.wp_postmeta WHERE meta_id = 9465078') 
    SET meta_value = 'outofstock';

是否可以使用OPENQUERY和链接的服务器来更新强制转换/转换的列?我尝试过各种方式进行转换或转换。

1 个答案:

答案 0 :(得分:1)

驱动程序似乎对LONGTEXT列有问题。

您可以通过以下选项限制LONGTEXT列的大小:

Limit column size to signed 32-bit range

(请注意不要丢失数据,但这是极少数情况,我认为任何String XD的长度都不会超过10亿个字符)

The last comment here would help you how to do that

现在,您可以删除演员表,并可以正常进行更新。