2016-09-15 3 views
0

Ich möchte zurück zu einer MySQL-Datenbank basierend auf einer glänzenden App schreiben. Dieser Code mit einigen Änderungen kommt von der ausgezeichneten 1. Ich habe einen Teil hinzugefügt, um mir den Zeitstempel der Aufnahme zu geben. Wenn ich versuche, den Datensatz ich folgende Fehlermeldung erhalten einfügenMit Shiny Einfügen von Datensätzen in eine MYSQL-DB

Fehler in .local (conn, Aussage, ...): konnte nicht ausgeführt Anweisung: Falscher Datetime-Wert: ‚1473931679,54479‘ für Spalte ‚insert_dtm‘ in Zeile 1

Dieser Datetime-Wert wird von Add insertion time stamp of the record and re-order columns meines Codes generiert. Kann mir jemand erklären, warum das passiert?

Ich sollte in der Tabelle erwähnen, die in den Datentyp geschrieben wird, ist DATETIME, aber ich kann dieses Interesse, da alle im zu etwas ändern in ist die Verfolgung, wenn die Datensätze

save_data <- function(data) { 
    # Connect to the database 
    db <- dbConnect(MySQL(), dbname = databaseName, host =  
    options()$mysql$host, 
       port = options()$mysql$port, user = options()$mysql$user, 
       password = options()$mysql$password) 

    # Add insertion time stamp of the record and re-order columns 
    data <- data %>% 
    mutate(insert_dtm = Sys.time()) %>% 
    select (insert_dtm, everything()) %>% 

    # Construct the update query by looping over the data fields 
    query <- sprintf(foo) 

    # Submit the update query and disconnect 
    dbGetQuery(db, query) 
    dbDisconnect(db) 
} 
+1

Haben Sie versucht, 'as.Date (Sys.time(), format = "% Y-% m-% d") 'anstelle von' Sys.time() '? – GyD

+0

Danke @GyD das ist in der Tat der Grund. Ich habe es in der MYSQL DB geändert, um den Zeitstempel zu aktualisieren, wenn ein neuer Datensatz in das System kommt, aber auch Ihre Lösung getestet, die funktioniert. Danke für Ihre Hilfe. Bitte fügen Sie es als Antwort hinzu und ich werde es akzeptieren. –

+0

Ich habe gerade festgestellt, dass Sie 'datetime' benötigen, aber ich habe vorgeschlagen, zu' date' zu ​​konvertieren, aber die 'format()' Funktion (und Umwandlung in Zeichen) sollte ebenfalls funktionieren. Überprüfen Sie bitte das. – GyD

Antwort

1

Der Grund eingefügt wurden, warum es hat nicht funktioniert, ist wegen des Unterschieds zwischen den Datumsformaten Sys.time() und MySQL date oder datetime Arten.

> Sys.time() 
###[1] "2016-09-23 11:30:36 CEST" 
###MySQL datetime: "2016-09-23 11:30:36" 

Nach der Konvertierung in MySQL Datetime-Format sollte es funktionieren. Ich denke, das Problem ist die Zeitzone.

Für YYYY-MM-DD-Format

> format(Sys.time(), "%Y-%m-%d") 
###[1] "2016-09-23" 

Für YYYY-MM-DD hh: mm: ss-Format

> format(Sys.time(), "%Y-%m-%d %H:%M:%S") 
###[1] "2016-09-23 11:37:45" 
Verwandte Themen