Mysql Openquery插入不工作
我有一个链接到MSSQL服务器的MySQL服务器,我试图将数据插入MySQL服务器上的表admin_user,但最终得到错误: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”
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