MySQL 链接服务器无法更新长文本
MySQL Linked Server can't update longtext
我有一个从 SQL 服务器到我的 mySQL 数据库的链接服务器(Windows 服务器使用 MySQL ODBC 驱动程序 5.3)。我有一个独特的情况,如果我在 OPEN QUERY 中转换它们,我只能将我的 longtext 列转换为 return:
SELECT *
FROM
OPENQUERY (woocommerce, 'SELECT meta_id, CONVERT(meta_value using UTF8) as meta_value
FROM woocommerce.wp_postmeta WHERE meta_id = 9465078')
如果我不 convert/cast 它,我会从链接服务器收到以下错误:
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.
我需要更新这个长文本列,"meta_value",但我不能,因为它已经 casted/converted。
UPDATE
OPENQUERY (woocommerce, 'SELECT meta_id, CONVERT(meta_value using utf8)
FROM woocommerce.wp_postmeta WHERE meta_id = 9465078')
SET meta_value = 'outofstock';
有什么方法可以使用 OPENQUERY 和链接服务器更新 casted/converted 列吗?我试过以各种方式转换或投射它。
驱动程序似乎对 LONGTEXT
列有问题。
您可以使用以下选项限制 LONGTEXT
列大小:
Limit column size to signed 32-bit range
(注意不要丢失数据,但这种情况很少见,我认为任何字符串都不会超过 10 亿个字符 XD)
The last comment here would help you how to do that
现在您可以移除演员表并可以正常进行更新。
我有一个从 SQL 服务器到我的 mySQL 数据库的链接服务器(Windows 服务器使用 MySQL ODBC 驱动程序 5.3)。我有一个独特的情况,如果我在 OPEN QUERY 中转换它们,我只能将我的 longtext 列转换为 return:
SELECT *
FROM
OPENQUERY (woocommerce, 'SELECT meta_id, CONVERT(meta_value using UTF8) as meta_value
FROM woocommerce.wp_postmeta WHERE meta_id = 9465078')
如果我不 convert/cast 它,我会从链接服务器收到以下错误:
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.
我需要更新这个长文本列,"meta_value",但我不能,因为它已经 casted/converted。
UPDATE
OPENQUERY (woocommerce, 'SELECT meta_id, CONVERT(meta_value using utf8)
FROM woocommerce.wp_postmeta WHERE meta_id = 9465078')
SET meta_value = 'outofstock';
有什么方法可以使用 OPENQUERY 和链接服务器更新 casted/converted 列吗?我试过以各种方式转换或投射它。
驱动程序似乎对 LONGTEXT
列有问题。
您可以使用以下选项限制 LONGTEXT
列大小:
Limit column size to signed 32-bit range
(注意不要丢失数据,但这种情况很少见,我认为任何字符串都不会超过 10 亿个字符 XD)
The last comment here would help you how to do that
现在您可以移除演员表并可以正常进行更新。