将MySQL(多个实例)数据库与Excel VBA连接

时间:2019-01-05 04:52:02

标签: mysql excel vba excel-vba

我的PC中安装了多个MySQL实例,分别是instance1和instance2 ...

  • 第一个实例数据目录为“ C:\ MYSQL2 \ Data”,地址为:localhost,port = 3306;

  • 第二个实例数据目录为“ C:\ ProgramData \ MySQL \ MySQL Server 5.7 \ Data”,地址为:localhost,端口= 3308;


server_name = "localhost"
port = "3308" 
database_name = "test2" 
user_id = "root" 
password = "xxxx" 

Set conn = New ADODB.Connection
conn.Open "DRIVER={MySQL ODBC 3.51 Driver}" _
& ";Data Source=localhost" _
& ";SERVER=" & server_name _
& ";PORT=" & port _
& ";DATABASE=" & database_name _
& ";UID=" & user_id _
& ";PWD=" & password _
& ";OPTION=16427" 

当我运行以上代码以连接第二实例数据库时,它向我显示错误:

  

运行时错误'-2147467259(80004005)':[Microsoft] [ODBC驱动程序管理器]找不到数据源名称且未指定默认驱动程序

此代码还显示了我的第一个实例的错误,该实例的服务器名称为localhost并且端口为= 3306

在仅安装默认实例的情况下,此代码运行良好。

1 个答案:

答案 0 :(得分:0)

在连接字符串中是否

Driver={MySQL ODBC 8.0 Unicode Driver}

然后,如果您打开 ODBC数据源(32位),而不是 ODBC数据源(64位)

enter image description here

看到相同的名字

enter image description here

然后此代码将起作用

Public Sub ask_sql1()
    Dim SQL As String
    SQL = "SELECT * FROM Users"

    Dim Conn As ADODB.Connection
    Set Conn = New ADODB.Connection
    Conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=127.0.0.1;Database=test;UID=root;PWD=*********"
    Conn.Open

    Dim recordSet As ADODB.recordSet
    Dim Field As ADODB.Field

    Set recordSet = New ADODB.recordSet
    recordSet.Open SQL, Conn, adOpenStatic, adLockReadOnly, adCmdText

    If recordSet.State Then
        For Each Field In recordSet.Fields
            MsgBox Field.Name
        Next Field
        Set recordSet = Nothing
    End If

        Conn.Close

End Sub

您也是64位还是32位办公

enter image description here

您可以添加 ODBC数据源(32位) / 驱动程序的屏幕快照吗?