我有一个从SQL Server到mySQL数据库的链接服务器(使用MySQL ODBC Driver 5.3的Windows Server)。我有一种独特的情况,如果我在OPEN QUERY中进行转换,我只能让我的longtext列返回:
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和链接服务器来更新强制转换/转换列?我尝试过各种方式进行转换或转换。
最佳答案
驱动程序似乎对LONGTEXT
列有问题。
您可以使用以下选项限制LONGTEXT
列的大小:
Limit column size to signed 32-bit range
(请注意不要丢失数据,但是这种情况很少见,我认为任何String XD的长度都不会超过10亿个字符)
The last comment here would help you how to do that
现在,您可以删除类型转换,并可以正常进行更新。
关于MySQL链接服务器无法更新longtext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51686945/