Соединение базы данных MySQL (несколько экземпляров) с Excel VBA - PullRequest
0 голосов
/ 05 января 2019

На моем компьютере установлено несколько экземпляров MySQL: instance1 & instance2 ...

  • Каталог данных 1-го экземпляра: "C: \ MYSQL2 \ Data", адрес: localhost, port = 3306;

  • Каталог данных второго экземпляра: «C: \ ProgramData \ MySQL \ MySQL Server 5.7 \ Data», адрес: localhost, port = 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" 

Когда я запускаю приведенный выше код для соединения с базой данных 2-го экземпляра, он показывает мне ошибку:

Ошибка времени выполнения '-2147467259 (80004005)': [Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

Этот код также показывает ошибку для моего первого экземпляра, имя сервера которого является localhost, а порт = 3306

Этот код работает нормально, если установлен только экземпляр по умолчанию.

1 Ответ

0 голосов
/ 05 января 2019

В строке подключения, если

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-разрядные) / Драйверы ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...