sql >> Databáze >  >> RDS >> Mysql

Indexované pole MySQL neukládá hodnotu při vytváření/úpravě záznamu prostřednictvím ADO

Podařilo se mi znovu vytvořit váš problém s 64bitovou verzí ovladače MySQL ODBC 5.3 Unicode Driver (5.03.04.00). Zdá se, že jde o problém s aktualizacemi sady záznamů ADO, když je poslední sloupec v tabulce typu TEXT . Neměl jsem ani index na userid a dostal jsem stejné výsledky.

Jedním z možných řešení by bylo použití ADODB.Command s parametry pro provedení vložení pomocí kódu podobného tomuto:

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

Testoval jsem to z databáze Access 2010 a fungovalo to dobře.



  1. Argument chyby uložené procedury 1 pro rutinu ... není proměnná nebo NOVÁ pseudoproměnná ve spouštěči BEFORE

  2. Získejte počet řádků z příkazu COPY

  3. Při spouštění balíčku došlo k chybě

  4. SQL Server Textový typ vs. datový typ varchar