mysql - Excel-Vba 连接 Mysql localhost 失败

标签 mysql excel localhost adodb vba

尝试实现 Excel VBA: writing to mysql database .

以下代码遇到运行时错误[MIcrosoft][ODBC Driver Manager] Data source name not found and no default driver specified

Dim cn As Object
Sub Connect()
Dim strCon as string
Set cn = CreateObject("ADODB.connection")

strCon = "DRIVER={MySQL ODBC 3.51 Driver};" & _
    "SERVER=localhost;" & _
    "DATABASE=dbname;" & _
    "USER=root;" & _
    "PASSWORD=mypass;" & _
    "Port=3306;" & _
    "Option=3"

cn.Open strCon

cn.Close

End Sub

使用以下 php 代码检查连接参数

$mysqli = new mysqli('localhost','root','mypass','dbname');

一切正常。

我在我的 VBA 项目引用中勾选了 Microsoft ActiveX Data Objects 2.8 Library

欢迎任何帮助。

最佳答案

无论此时它值多少钱(因为我刚遇到它,我花了一天时间才弄明白):

您可能拥有 32 位或 64 位形式的 MySQL(或其他数据库/应用程序)。 您可能拥有 32 位或 64 位形式的 Excel(或其他应用程序)。 您可能以 32 位或 64 位形式在两者之间建立 ODBC“连接”。

通常,ODBC 驱动程序会在您安装数据库产品时安装,因此它与数据库相同。

不幸的是,这并不重要。

重要的是 ODBC 驱动程序与应用程序(例如 Excel)正确匹配。

如果您有 32 位 Excel,并安装 64 位 MySQL,那很好,但是 Excel 将无法连接到 MySQL(除非通过 MySQL 连接器,但这不是这里的目标)。 您将无法编写 Excel 应用程序以通过 ODBC 从数据库中读取数据。

解决方法很简单。下载 32 位的 MySQL ODBC 驱动程序(与 MySQL 在同一位置),并安装它。 (它会告诉你“已经安装”——因为它会看到 64 位版本——并询问你是否要卸载。说是。)

现在,32 位 Excel 可以与 32 位 ODBC 驱动程序对话,后者可以与 64 位 MySQL 对话,以交换数据。

注意:据我所知,您只能安装一种类型的 ODBC 驱动程序(每个数据库应用程序)。因此,如果您使用的是 64 位版本,也许对于某些其他应用程序,您必须卸载它(这会中断对该应用程序的访问)才能安装 32 位版本,以便您可以使用 Excel。

关于mysql - Excel-Vba 连接 Mysql localhost 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20750508/

相关文章:

mysql - 数据库中的最后一行

mysql - 为什么我无法在运行时更改变量 long_query_time 变量

c# - C# 中的 Stream Empty 读取并上传 Excel 文件

localhost - 在本地主机上使用 reCAPTCHA

mysql - 远程连接到在 Amazon EC2 实例上运行的 mysql

mysql - 在 MySql 中执行查询时与 only_full_group_by 相关的错误

mysql - SQL获取同一列但同一表中不同日期的值差异

java - 读取excel文件字节数组

java - 为什么用 Java 编写 Excel 时会发生这种情况

r - Shiny 的runExample错误-无法创建服务器