Ik heb uw probleem kunnen reproduceren met de 64-bits versie van het MySQL ODBC 5.3 Unicode-stuurprogramma (5.03.04.00). Het lijkt een probleem te zijn met ADO Recordset-updates wanneer de laatste kolom in de tabel van het type TEXT
is . Ik had niet eens een index op userid
en ik kreeg dezelfde resultaten.
Een mogelijke oplossing zou zijn om een ADODB.Command
. te gebruiken met parameters om het invoegen uit te voeren met behulp van code die lijkt op deze:
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
Ik heb het getest vanuit een Access 2010-database en het werkte prima voor mij.