Успях да пресъздам вашия проблем с 64-битовата версия на MySQL ODBC 5.3 Unicode драйвер (5.03.04.00). Изглежда, че има проблем с актуализациите на ADO Recordset, когато последната колона в таблицата е от тип TEXT
. Дори нямах индекс на userid
и получих същите резултати.
Едно възможно заобиколно решение би било използването на ADODB.Command
с параметри за извършване на вмъкването с помощта на код, подобен на този:
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
Тествах го от база данни на Access 2010 и работи добре за мен.