dbwritetable 删除 mysql 中的自动增量字段
Posted
技术标签:
【中文标题】dbwritetable 删除 mysql 中的自动增量字段【英文标题】:dbwritetable removes auto increment field in mysql 【发布时间】:2016-03-31 11:16:36 【问题描述】:我是第一次使用 mysql。我在 mysql 中创建了一个数据库,其中包含一些使用 phpMYADMIN 的表。其中一张表的标题为“城市”。此表为两列字段 1. City_ID 和 2. City。在此 City_ID 是具有自动增量的主键。
我有 CSV 格式的数据,已读入 R。从数据框中,我使用以下命令从 R - DF 获取城市值。
City <- as.data.frame(unique(df[,10]))
names(City) <- "City"
我正在使用以下代码连接 MySql。
library(RMySQL)
mydb <- dbConnect(MySQL(), user = "root", password = "****", dbname = "pal", host = "localhost")
dbWriteTable(mydb, "City", City, overwrite = TRUE, row.names = FALSE)
这将删除字段 City_ID 并用值填充表的 City 列。不知道如何解决这个问题。我所做的大部分工作都有 excel 或 csv 格式的数据。而且我也需要经常更新表格。对此有任何想法。
【问题讨论】:
你确实指定了overwrite = TRUE
。
dbWriteTable(..., append = T) is overwritng in R的可能重复
@PanagiotisKanavos 我确实尝试使用 overwrite = FALSE
以及 append = T 但我的 sql 表中的值仅为零。
【参考方案1】:
我想,这也是本案的问题所在。 LAST_INSERT_ID() always returns 0 (RMySQL) - separate connection issue 正如 Illari 在不同主题中所写。
library("RMySQL")
con <- dbConnect(MySQL())
dbSendQuery(con, "DROP TABLE IF EXISTS t;")
dbSendQuery(con, "CREATE TABLE t (i INT NOT NULL AUTO_INCREMENT PRIMARY KEY);")
res <- dbSendQuery(con, "INSERT INTO t VALUES (NULL);")
doesn't work:
dbGetQuery(con, "SELECT LAST_INSERT_ID();")
LAST_INSERT_ID()
1 0
# works:
dbClearResult(rs)
dbGetQuery(con, "SELECT LAST_INSERT_ID();")
LAST_INSERT_ID()
1 1
【讨论】:
以上是关于dbwritetable 删除 mysql 中的自动增量字段的主要内容,如果未能解决你的问题,请参考以下文章
RMySQL dbWriteTable 与 field.types