VBA - получение «mysql server - ошибка --read-only», но только при использовании RecordSet - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть следующее подраздел:

Dim oConn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Set rst = New ADODB.Recordset

Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
    "SERVER=server;" & _
    "DATABASE=db;" & _
    "USER=user;" & _
    "PASSWORD=pass;" & _
    "Option=3"


Set cmd = New ADODB.Command
cmd.ActiveConnection = oConn

table_name = Sheets("Master").Range("S2").Value

SQLstr = "Select * From " & table_name
rst.Open SQLstr, oConn, adOpenDynamic, adLockOptimistic

lRow = Cells(Rows.Count, 1).End(xlUp).Row
lCol = Cells(1, Columns.Count).End(xlToLeft).Column

For rowindx = 2 To lRow
    rst.AddNew
        For fieldIndx = 1 To lCol
            rst.Fields(Cells(1, fieldIndx).Value) = Cells(rowindx, fieldIndx).Value
        Next fieldIndx
Next rowindx
rst.UpdateBatch

rst.Close
oConn.Close

Set rst = Nothing
Set oConn = Nothing

MsgBox ("Query Successful")

Это дает мне сообщение «Сервер MySQL работает с опцией --read-only, поэтому он не может выполнить инструкцию» на шаге rst.AddNew.

Однако, когда я запускаю отдельную функцию, присоединенную к другому макросу (та же база данных, тот же сервер), все выполняется как положено. База данных не только для чтения.

Dim oConn As New ADODB.Connection
Dim cmd As New ADODB.Command

Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
    "SERVER=server;" & _
    "DATABASE=database;" & _
    "USER=user;" & _
    "PASSWORD=password;" & _
    "Option=3"


Set cmd = New ADODB.Command
cmd.ActiveConnection = oConn

cmd.CommandText = strSQL
cmd.Execute

oConn.Close
MsgBox ("Query Successful")

Что не так с первым блоком?Набор записей по умолчанию доступен только для чтения?

1 Ответ

0 голосов
/ 21 сентября 2018

Просто нужно было изменить adLockOptimistic на adLockBatchOptimistic

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