Tôi đã có thể tạo lại sự cố của bạn với phiên bản 64-bit của Trình điều khiển Unicode MySQL ODBC 5.3 (5.03.04.00). Có vẻ như có vấn đề với bản cập nhật ADO Recordset khi cột cuối cùng trong bảng thuộc loại TEXT
. Tôi thậm chí không có chỉ mục trên userid
và tôi nhận được kết quả tương tự.
Một giải pháp khả thi là sử dụng ADODB.Command
với các tham số để thực hiện chèn bằng cách sử dụng mã tương tự như sau:
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
Tôi đã thử nghiệm nó từ cơ sở dữ liệu Access 2010 và nó hoạt động tốt đối với tôi.