【发布时间】:2020-07-27 20:25:37
【问题描述】:
从 3 月中旬开始,dbWriteTable 停止正常工作,现在只将 data.frame 的第一行写入 MySQL 表。发生这种情况后,我将 MySQL、MySQL Workbench、RStudio、R 和我所有的 R 包更新到最新版本,但没有任何改进。本来以为只在追加到数据库表时才会出现,但写入新创建的表时也会出现。
它不会产生错误消息,并且 dbWriteTable 返回 TRUE,就好像它成功了一样,但只有一行被写入 MySQL 表。
会话信息
devtools::session_info()
- Session info --------------------------------------------------------------------------
setting value
version R version 3.6.3 (2020-02-29)
os Windows 10 x64
system x86_64, mingw32
ui RStudio
language (EN)
collate English_United States.1252
ctype English_United States.1252
tz America/Los_Angeles
date 2020-04-14
- Packages -------------------------------------------------------------------------
package * version date source
- assertthat 0.2.1 2019-03-21 CRAN (R 3.6.0)
- backports 1.1.6 2020-04-05 CRAN (R 3.6.3)
- bit 1.1-15.2 2020-02-10 CRAN (R 3.6.2)
- bit64 0.9-7 2017-05-08 CRAN (R 3.6.2)
- blob 1.2.1 2020-01-20 CRAN (R 3.6.3)
- callr 3.4.3 2020-03-28 CRAN (R 3.6.3)
- cli 2.0.2 2020-02-28 CRAN (R 3.6.3)
- crayon 1.3.4 2017-09-16 CRAN (R 3.5.0)
- DBI * 1.1.0 2019-12-15 CRAN (R 3.6.3)
- desc 1.2.0 2018-05-01 CRAN (R 3.5.0)
- devtools 2.3.0 2020-04-10 CRAN (R 3.6.3)
- digest 0.6.25 2020-02-23 CRAN (R 3.6.3)
- ellipsis 0.3.0 2019-09-20 CRAN (R 3.6.2)
- fansi 0.4.1 2020-01-08 CRAN (R 3.6.2)
- fs 1.4.1 2020-04-04 CRAN (R 3.6.3)
- glue 1.4.0 2020-04-03 CRAN (R 3.6.3)
- hms 0.5.3 2020-01-08 CRAN (R 3.6.2)
- magrittr 1.5 2014-11-22 CRAN (R 3.5.0)
- memoise 1.1.0 2017-04-21 CRAN (R 3.5.0)
- odbc * 1.2.2 2020-01-10 CRAN (R 3.6.3)
- pkgbuild 1.0.6 2019-10-09 CRAN (R 3.6.2)
- pkgconfig 2.0.3 2019-09-22 CRAN (R 3.6.2)
- pkgload 1.0.2 2018-10-29 CRAN (R 3.5.1)
- prettyunits 1.1.1 2020-01-24 CRAN (R 3.6.2)
- processx 3.4.2 2020-02-09 CRAN (R 3.6.2)
- ps 1.3.2 2020-02-13 CRAN (R 3.6.2)
- R6 2.4.1 2019-11-12 CRAN (R 3.6.2)
- Rcpp 1.0.4.6 2020-04-09 CRAN (R 3.6.3)
- remotes 2.1.1 2020-02-15 CRAN (R 3.6.2)
- rlang 0.4.5 2020-03-01 CRAN (R 3.6.3)
- rprojroot 1.3-2 2018-01-03 CRAN (R 3.5.0)
- rstudioapi 0.11 2020-02-07 CRAN (R 3.6.2)
- sessioninfo 1.1.1 2018-11-05 CRAN (R 3.5.1)
- testthat 2.3.2 2020-03-02 CRAN (R 3.6.3)
- usethis 1.6.0 2020-04-09 CRAN (R 3.6.3)
- vctrs 0.2.4 2020-03-10 CRAN (R 3.6.3)
- withr 2.1.2 2018-03-15 CRAN (R 3.5.0)
[1] D:/R_HOME/library
[2] D:/R_HOME/R-3.6.3/library
可重现的代码
library(DBI)
#Connect to MySQL database
con <- dbConnect(odbc::odbc(),
dsn =mydsn,
database = mydatabase,
uid=myId,
pwd= myPassword)
dbListTables(con)
x <- dbWriteTable(con, "mtcars", mtcars, temporary = FALSE)
dbReadTable(con, "mtcars")
x2 <- dbWriteTable(con, "mtcars", mtcars[2:3, ], append=TRUE, temporary = FALSE)
dbReadTable(con, "mtcars")
dbListTables(con)
dbExistsTable(con, "mtcars")
dbDisconnect(con)
之后
x <- dbWriteTable(con, "mtcars", mtcars, temporary = FALSE)
x = 真
在以下之后
dbReadTable(con, "mtcars")
输出是:
row_names mpg cyl disp hp drat wt qsec vs am gear carb
1 Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
之后
x2 <- dbWriteTable(con, "mtcars", mtcars[2:3, ], append=TRUE, temporary = FALSE)
x2 = 真
在以下之后
dbReadTable(con, "mtcars")
输出是:
row_names mpg cyl disp hp drat wt qsec vs am gear carb
1 Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
2 Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
这个问题看起来很基本,我已经卸载并重新安装了 R、RStudio 和 DBI、odbc,以及我认为可能依赖于这些的任何其他包,但我没有成功。所有软件包都是最新的。
R 版本 3.6.3 (2020-02-29)
MySQL Workbench 8.0 版本 8.0.19
MySQL Workbench 8.0 版本 8.0.19 Build 15713499 CE(64 位)社区
Windows 10 专业版 64 位版本:18362.720
Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
系统内存 16GB
任何建议将不胜感激。
【问题讨论】:
-
如果您使用
RMariaDB::MariaDB()代替odbc::odbc(),问题是否仍然存在?驱动程序应该可以互换,但乍一看我看不出任何其他问题。 -
@Brian 我尝试使用 RMariaDB::MariaDB() 但我不断收到有关“caching-sha2-password”的错误消息,我还没有想出如何解决这个问题。