使用Shiny将记录插入MYSQL数据库
问题描述:
我希望基于闪亮的应用程序回写到mysql数据库。 这个代码有一些修改来自优秀的1。我添加了一部分来给我插入记录的时间戳。当我尝试插入我得到以下错误。当地使用Shiny将记录插入MYSQL数据库
错误(康涅狄格州,声明,...)备案: 无法运行的语句:不正确的日期时间值:“1473931679.54479”列“insert_dtm”在第1行
此日期时间值由我的代码的Add insertion time stamp of the record and re-order columns
生成。任何人都可以解释为什么会这样。
我应该在正在写入的数据类型的表提的是DATETIME
但我可以将其更改为任何东西作为兴趣在所有IM是跟踪时,记录插入的
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)
}
答
之所以它不起作用是因为日期格式Sys.time()
和MySQL date
或datetime
类型之间的差异。
> Sys.time()
###[1] "2016-09-23 11:30:36 CEST"
###MySQL datetime: "2016-09-23 11:30:36"
转换为MySQL日期时间格式后,它应该工作。我认为问题在于时区。
对于YYYY-MM-DD格式
> format(Sys.time(), "%Y-%m-%d")
###[1] "2016-09-23"
对于YYYY-MM-DD HH:mm:ss格式
> format(Sys.time(), "%Y-%m-%d %H:%M:%S")
###[1] "2016-09-23 11:37:45"
您是否尝试过'as.Date(Sys.time() format =“%Y-%m-%d”)'而不是'Sys.time()'? – GyD
谢谢@GyD的确是这个原因。我在MYSQL数据库中对它进行了更改,以便在新记录进入系统时更新时间戳,同时也测试了您的解决方案。感谢您的帮助。请添加它作为答案,我会接受它 –
我刚刚意识到你需要'日期时间',但我建议转换为'日期',但使用format()函数(并转换为字符)也应该工作。请检查一下。 – GyD