Mysql Openquery插入不工作

Mysql Openquery插入不工作,mysql,sql,sql-server,openquery,Mysql,Sql,Sql Server,Openquery,我有一个链接到MSSQL服务器的MySQL服务器,我试图将数据插入MySQL服务器上的表admin_user,但最终得到错误: INSERT into openquery([MYDB], 'dbo.admin_user') values ('Testi','Testaaja','me@google.com','koe','','','','','','1','N;','','') 无法处理对象“dbo.admin\u user”。OLE DB提供程序 链接服务器“MYDB”的“MSDASQL”

我有一个链接到MSSQL服务器的MySQL服务器,我试图将数据插入MySQL服务器上的表admin_user,但最终得到错误:

INSERT into openquery([MYDB], 'dbo.admin_user') values ('Testi','Testaaja','me@google.com','koe','','','','','','1','N;','','')
无法处理对象“dbo.admin\u user”。OLE DB提供程序 链接服务器“MYDB”的“MSDASQL”表示对象 没有列,或者当前用户没有该列的权限 反对

这很好:

SELECT * FROM openquery([MYDB], 'SELECT * FROM admin_user')
这将获取错误:

INSERT into openquery([MYDB], 'dbo.admin_user') values ('Testi','Testaaja','me@google.com','koe','','','','','','1','N;','','')
以下是我用于创建ODBC连接的用户的权限

|xx.xxx.xxx.xx |我|*qweqweqwdq2edqdasd| Y | Y | Y | Y | Y| Y | Y | Y | Y | Y | N |Y | Y | Y | Y | Y
|Y | Y | Y | Y
|Y | Y | Y | Y
|Y | Y | Y | Y| Y | | | |
| 0 | 0 | 0 | 0 ||空|

>     | %             | me | *asdasadasdsadasdasdsad| Y           | Y           | Y           | Y           | Y           |
> Y         | Y           | Y             | Y            | Y         | Y
> | Y               | Y          | Y          | Y            | Y        
> | Y                     | Y                | Y            | Y         
> | Y                | Y                | Y              | Y            
> | Y                  | Y                | Y          | Y            |
> Y                      |          |            |             |        
> |             0 |           0 |               0 |                    0
> |        | NULL                  |
我的目录是bitnami_magento,我将提供程序字符串配置为

驱动程序=(MySQL ODBC 5.3 ANSI驱动程序);服务器= 二十、 XXX.XXX.XXX;端口=3306;数据库=bitnami_magento; 用户=我;密码=mypass;选项=3

此外,我还从提供者选项(MSDASQL)中取消选中了“仅限零级”框,并确保允许临时查询。我做错了什么

这是我遵循的指示
您的查询中有一个错误:

在OPENQUERY()中,必须使用MySQL表名,而不是MSSQL表名(如果要插入MySQL表中)

以下语法应该可以工作

INSERT INTO OPENQUERY([MYDB], 'SELECT * FROM mysqlDbName.mysqlTableName') VALUES
('Testi','Testaaja','me@google.com','koe','','','','','','1','N;','','')

请将mysqlDbName.mysqlTableName更改为相应的MySQL数据库和表名。

问题是我是个白痴。Openquery的语法要求返回一个结果集

因此,它显然需要将“虚拟查询”作为实际查询的一部分合并,以便在响应中获得结果集。写入“where 1=0”会加快查询速度,因为它不会在响应中得到任何实际结果

工作示例:

 insert openquery(MYDB, 'select firstname from admin_user where 1=0') values ('3','Testi','Testaaja','me@google.com','koe12','koe22','','','','0','0','1','','','')
OpenQuery需要返回一个结果集,但需要更新、删除、, 与OpenQuery一起使用的和INSERT语句不返回 结果集


我试着插入为root@localhost从MySQL服务器,它工作得很好。用户me拥有所有权限,因此我不知道为什么它不能使用openqueryHave插入您是否尝试了没有“dbo”的插入是。实际上,您只需要MYDB(带括号或不带括号),因为它是链接服务器属性中定义为“链接服务器”的链接数据库的名称。提供程序字符串将注意使用“正确”数据库。这是正确的,这是完整语法。另外请注意,我将
SELECT*FROM
部分添加到
OPENQUERY
中,您的查询仍然需要dummy where子句,否则它会很慢,因为它会得到一个结果集。您应该将其设置为不会得到任何结果,例如,其中1=0