Ich konnte Ihr Problem mit der 64-Bit-Version des MySQL ODBC 5.3 Unicode-Treibers (5.03.04.00) reproduzieren. Es scheint ein Problem mit ADO-Recordset-Aktualisierungen zu geben, wenn die letzte Spalte in der Tabelle vom Typ TEXT
ist . Ich hatte nicht einmal einen Index für userid
und ich habe die gleichen Ergebnisse.
Eine mögliche Problemumgehung wäre die Verwendung eines ADODB.Command
mit Parametern, um die Einfügung mit Code ähnlich dem folgenden auszuführen:
Dim oConn As ADODB.Connection
Dim cmd As ADODB.Command
Set oConn = New ADODB.Connection
oConn.Open _
"Driver=MySQL ODBC 5.3 Unicode Driver;" & _
"SERVER=localhost;" & _
"UID=root;" & _
"PWD=whatever;" & _
"DATABASE=mydb;" & _
"PORT=3306;" & _
"DFLT_BIGINT_BIND_STR=1"
Set cmd = New ADODB.Command
cmd.ActiveConnection = oConn
cmd.CommandText = _
"INSERT INTO phplist_user_user_history " & _
"(`userid`, `ip`, `date`, `Summary`, `Detail`, `systeminfo`) " & _
"VALUES (?,?,?,?,?,?)"
cmd.Parameters.Append cmd.CreateParameter("?", adInteger, adParamInput, , 456)
cmd.Parameters.Append cmd.CreateParameter("?", adVarWChar, adParamInput, 255, "")
cmd.Parameters.Append cmd.CreateParameter("?", adDBTimeStamp, adParamInput, 255, Now)
cmd.Parameters.Append cmd.CreateParameter("?", adVarWChar, adParamInput, 255, "cHistory.Subject")
cmd.Parameters.Append cmd.CreateParameter("?", adLongVarWChar, adParamInput, 2147483647, "cHistory.Body")
cmd.Parameters.Append cmd.CreateParameter("?", adLongVarWChar, adParamInput, 2147483647, "Automated syncronization process.")
cmd.Execute
Set cmd = Nothing
oConn.Close
Set oConn = Nothing
Ich habe es von einer Access 2010-Datenbank aus getestet und es hat bei mir gut funktioniert.