J'ai pu recréer votre problème avec la version 64 bits du pilote MySQL ODBC 5.3 Unicode (5.03.04.00). Il semble y avoir un problème avec les mises à jour ADO Recordset lorsque la dernière colonne de la table est de type TEXT
. Je n'avais même pas d'index sur userid
et j'ai obtenu les mêmes résultats.
Une solution de contournement possible serait d'utiliser un ADODB.Command
avec des paramètres pour effectuer l'insertion en utilisant un code similaire à ceci :
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
Je l'ai testé à partir d'une base de données Access 2010 et cela a bien fonctionné pour moi.