【问题标题】:Insert error using Linked Server MySQL使用链接服务器 MySQL 插入错误
【发布时间】:2012-04-27 09:20:38
【问题描述】:

我已经使用带有以下提供程序字符串的 ODBC 驱动程序创建了一个链接服务器

DRIVER={MySQL ODBC 5.1 Driver};SERVER=HOST;USER=uid;PASSWORD=pw;OPTION=3

我的链接服务器名为 MYSQL。如果我以这种方式选择和更新,它可以正常工作

SELECT * FROM OPENQUERY(MYSQL,'SELECT * FROM DatabaseName.Table')
UPDATE OPENQUERY(MYSQL, 'SELECT * FROM DatabaseName.Table where test=0') SET test=1

当我尝试使用以下语法执行插入时

INSERT OPENQUERY(MYSQL,'SELECT Column1, Column2, Column3 from DatabaseName.Table WHERE 1=0') VALUES (10,20,30)

我有以下错误

The OLE DB provider "MSDASQL" for linked server "MYSQL" could not INSERT INTO table "[MSDASQL]". Commands out of sync; you can't run this command now.

【问题讨论】:

  • 解决了以这种方式创建我的链接服务器:EXEC master.dbo.sp_addlinkedserver @server='MYSQL',@srvproduct='MySQL',@provider='MSDASQL',@provstr='DRIVER= {MySQL ODBC 5.1 驱动程序};SERVER=HOST;Port=3306;USER=uid;PASSWORD=pw;OPTION=3;DATABASE=mydb;

标签: mysql sql-server-2008 oledb linked-server openquery


【解决方案1】:

我认为您在另一个论坛上遇到了与 this thread 相同的问题。从似乎已经为那里的人解决问题的答案来看,您似乎缺少提供程序字符串中的数据库名称。尝试将DATABASE=mydb; 添加到您的提供程序字符串中。

这是原来的答案:

显然,如果您尝试使用 studio 和 各种菜单,连接字符串中没有保存一个小细节, 这是数据库!

EXEC master.dbo.sp_addlinkedserver @server='MYSQL', @srvproduct='MySQL',
@provider='MSDASQL', @provstr='DRIVER={MySQL ODBC 5.1
Driver};SERVER=HOST;Port=3306;USER=uid;PASSWORD=pw;OPTION=3;DATABASE=mydb;

odbc 驱动程序中的错误似乎只影响插入语句 并且自 2008 年以来一直存在...我希望 mysql 已修复 到此为止……

使用上述过程创建链接服务器后, 插入效果和其他所有功能一样好!

【讨论】:

  • @Luigi 看起来您在我发布答案的同时发表了评论。以后问你的问题后,如果你自己解决了,请将解决方案添加为答案并接受。这样其他用户就不会尝试回答您的问题,并且有相同问题的人无需在您的 cmets 中四处寻找答案。
  • @Luigi 所以现在请将此问题标记为已解决,方法是将您的答案发布为新答案并接受它,或者接受我的答案。
  • 你是对的布里奇。但我试图回答我的问题,但我没有 100 的声誉,为此我对我的问题发表了评论。现在我将您的答案标记为已解决;)
【解决方案2】:

我刚刚遇到了同样的问题,并设法通过为我的 ODBC 连接停用 Force use of forward-only cursorDon't cache results for forward-only cursor 来解决它。

我不确定是否需要禁用这两个选项。我从here得到了提示

我通过 MySQL ODBC/Connector v5.1.11,64 位将 SQL Server 2012 链接到 MySQL v5.1。我的链接数据源配置为使用已指定 MySQL 数据库的系统 ODBC DSN(这与之前的答案有关),但在停用这些游标选项之前我仍然收到错误(默认情况下,它们未启用新的数据源,我是在某个时候启用它们的人)。

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多