dbWriteTable仅将data.frame的一行写入MySQL表

问题描述 投票:0回答:1

[从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 = TRUE

以下之后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 = TRUE

以下之后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 Pro 64位版本:18362.720

[Intel(R)Core(TM)i7-7700 CPU @ 3.60GHz

系统内存16GB

任何建议将不胜感激。

mysql r odbc dbi
1个回答
0
投票

@@ Brian非常感谢您的建议。花了一段时间使RMariaDB与MySQL通讯,而没有出现caching_sha2_password错误,但是RMariaDB终于能够连接,并且dbWriteTable成功地将完整的data.frames写入MySQL。看来问题一定是odbc。

© www.soinside.com 2019 - 2024. All rights reserved.