Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le champ MySQL indexé n'enregistre pas la valeur lors de la création/modification d'un enregistrement via ADO

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.