Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trường MySQL được lập chỉ mục không lưu giá trị khi tạo / chỉnh sửa bản ghi thông qua ADO

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo không thành công:tên nút hoặc tên dịch vụ được cung cấp hoặc không được biết

  2. có giới hạn độ dài đối với group_concat hay lý do khác khiến nó không hoạt động trên trường văn bản không

  3. Mục đích của SQLAlchemy trên MySQLdb

  4. cần trả về hai tập dữ liệu với hai mệnh đề where khác nhau

  5. Hibernate mã hóa sai trong khi các đối tượng vẫn tồn tại [UTF-8]