使用Linked Server MySQL插入错误

时间:2012-04-27 09:20:38

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

我使用带有以下提供程序字符串

的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.

2 个答案:

答案 0 :(得分:0)

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

以下是原始答案:

  

显然,如果您尝试使用studio和the创建链接服务器   各种菜单,小细节未保存在连接字符串中,   这是数据库!

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驱动程序中的错误似乎只影响insert语句   并且自2008年以来一直存在...我希望mysql修复   它现在......

     

使用上述过程创建链接服务器后,   插入工作以及其他所有工作!

答案 1 :(得分:0)

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

我不确定是否需要禁用这两个选项。我从here

得到了提示

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