首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助建立ODBC MySQL连接

问需要帮助建立ODBC MySQL连接
EN

Server Fault用户
提问于 2011-06-21 19:18:44
回答 1查看 3.4K关注 0票数 2

简短版本:

如何从PowerShell连接到ODBC5.1 MySQL驱动程序?我似乎找不到任何连接字符串为这个特定的实例准确地有一个“提供者”字段。(有关示例/错误,请参见本问题的底部)

=====

长篇版本:

我不是一个服务生,我被赋予了在我们的网络上设置PowerGadgets的任务。

我有一个运行在Linux上的MySQL服务器,它被配置为远程访问,并且定义了一个用于远程访问的用户。

在我的windows桌面PC上,我安装了PowerGadgets。我安装了MySQL ODBC5.1连接器,然后转到Control >数据源,并设置了到数据库的用户DSN连接。

连接、用户和传递似乎是正确的,因为它在我的windows控制面板中列出了数据库的表。

我遇到麻烦的地方在PowerGadgets的三个地方:

  1. 当选择数据源时,我可以选择“Server”。输入服务器IP地址不起作用,我根本无法让这个选项工作。
  2. 在选择数据源时,我可以选择"OleDB“。此屏幕上有一个向导,该向导似乎填充了所有正确的信息(包括数据库表名!)对我来说。“测试连接”运行良好。但是,如果我试图完成向导,我就会得到一个错误:“OLEDB的.NET框架数据提供程序不支持用于ODBC的MS提供程序”。
  3. 在选择数据源时,我可以选择"ODBC“。这个屏幕没有向导,我也找不出一个“连接字符串”。通常情况下,它将以“字段‘提供者’缺失”的错误来响应。在Googling上搜索ODBC连接字符串不会显示任何带有"provider“字段的示例,也不知道在这里放什么。上面的连接字符串(用于#2)包含作为提供程序的"SQLOLEDB“,当将该值输入到该连接字符串时,我将得到与#2相同的连接错误。

我相信我可以通过为#3找出一个连接字符串来解决我的问题,但不知道从哪里开始。

(PowerGadgets也允许PowerShell支持,但我相信我也会遇到同样的问题)

==

下面是我当前无法工作的PowerShell连接:

代码语言:javascript
复制
invoke-sql -connection "Driver={MySQL ODBC 5.1 Driver};Initial Catalog=hq_live;Data Source=HQDB" -sql "Select * FROM accounts"

吐出错误:

代码语言:javascript
复制
"Invoke-Sql : An OLE DB Provider was not specified in the ConnectionString.  An example would be, 'Provider=SQLOLEDB;'.

==

另一个不起作用的字符串:

代码语言:javascript
复制
invoke-sql -connection "Provider=MSDASQL.1;Persist Security Info=False;Data Source=HQDB;Initial Catalog=hq_live" -sql "select * from accounts"

而错误是:

代码语言:javascript
复制
The .Net Framework Data Provider for OLEDB (System.Data.OleDb) does not support the Microsoft OLE DB Provider for ODBC Drivers (MSDASQL). Use the .Net Framework Data Provider for ODBC (System.Data.Odbc).
EN

回答 1

Server Fault用户

发布于 2011-06-21 23:54:47

我不知道从哪里开始,所以我就直接跳到中间去。

“SQL Server”的意思是“Microsoft SQL Server”,这就是为什么不起作用的原因。出于某种原因,微软喜欢用通用术语来命名他们的产品。

invoke-sql是PowerGadgets的一部分,在这里有文档说明:http://support.softwarefx.com/SupportDocTree.aspx?Prod=PG10&Type=A

从稀疏的文档和您得到的错误消息来看,invoke-sql希望通过ADO.NET连接到数据库。从文档中我看不到任何方法来告诉它要使用什么ADO.NET驱动程序,但听起来可能您可以在某种GUI中设置它--有点奇怪,但是可以。

ADO.NET提供了一个兼容性层,用于连接到只提供OLE DB或ODBC驱动程序的数据库。如果您选择“OLE DB”或“ODBC”,那么听起来PowerGadgets正在通过兼容层(从错误消息判断)。

OLE不适合您的原因是,您提供的连接字符串告诉OLE DB通过另一个兼容层进行连接,以便通过其ODBC驱动程序与数据库进行通信。这听起来像是ADO.NET特别不允许这样做,大概是因为它会导致通过两个兼容层和一个ODBC驱动程序与数据库对话的各种痛苦。

MySQL没有提供OLE DB驱动程序,但是您可以通过安装第三方MySQL OLE DB驱动程序 (不幸的是一个付费产品,但您可以免费试用几天)来使它工作。

ODBC应该可以工作,但听起来像是在尝试验证连接字符串,就好像它是OLE DB连接字符串一样。OLE DB连接字符串包括一个Provider参数,但我从未在ODBC字符串中看到过该参数。我对这个有点困惑,但我怀疑是PowerGadgets中的一个错误/错误。

MySQL提供了一个称为连接器/网的ADO.NET驱动程序。如果你安装了它,那么如果你幸运的话,也许PowerGadgets会让你选择使用那个驱动程序。我对此表示怀疑,但如果会的话,这可能是你最好的选择。MySQL连接器/网络连接字符串如下所示:

代码语言:javascript
复制
server=localhost;user=dan;database=stuff;port=3306;password=bla;
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/282740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档