У меня есть следующее подраздел:
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")
Что не так с первым блоком?Набор записей по умолчанию доступен только для чтения?