更新到 R 4.2.0 后看不到 DB2 (AS400) 数据库上的任何对象
Cannot see any objects on DB2 (AS400) database after updating to R 4.2.0
当我使用最近发布的 R 4.2.0 通过 ODBC 连接到 DB2 数据库时,数据库似乎没有对象。连接到 AWS 没有这样的问题,并且使用旧版本的 R 可以查看对象。
我在 Windows 10,正在连接到 DB2 数据库 (iSeries/AS400)。
我正在使用 odbc 连接。
我可以使用以前版本的 R 进行连接
(64 位 R4.0.2 和 32 位 R4.1.3 - 差异的原因是与 64 位版本的 R 4.1.x 与我的 OS 构建冲突,但这是另一回事).
我最近安装的 R4.2.0 似乎运行良好。它运行 R 代码,我可以通过 ODBC 连接到 AWS 并进行查询——但是当我尝试连接到 DB2 数据库时发生了一些奇怪的事情——连接似乎成功了,但数据库似乎不包含任何对象。查询失败,出现各种错误代码——其中一些包含一些非拉丁字符(但大部分是拉丁文中的英语)。
使用旧版本的 R,一切正常 - 我可以连接并查询 DB2 数据库。
R4.2.0 在 Windows 上的变化之一是字符集,我尝试将字符集设置为旧版本 R 中使用的默认字符集,但这并不能解决问题。
我试过使用 RODBC 包,但遇到了类似的问题。
我使用的代码如下:
library(tidyverse)
library(odbc)
# Connect to DB --------------------------------------------------------
conn <- dbConnect(odbc(),
Driver = "iSeries Access ODBC Driver",
Server = "my.server.location",
system = "MySystemName",
uid = rstudioapi::askForPassword(prompt = "What is your user name?"),
pwd = rstudioapi::askForPassword(prompt = "What is your password?"))
我的会话信息是:
R version 4.2.0 (2022-04-22 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.utf8 LC_CTYPE=English_United Kingdom.utf8
[3] LC_MONETARY=English_United Kingdom.utf8 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.utf8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] odbc_1.3.3 forcats_0.5.1 stringr_1.4.0 dplyr_1.0.8 purrr_0.3.4 readr_2.1.2 tidyr_1.2.0
[8] tibble_3.1.6 ggplot2_3.3.5 tidyverse_1.3.1
注意:这是我的第一个问题,如果我错过了好的练习,我深表歉意。
我通过在 dbConnect
调用中添加 CCSID = 1252
解决了这个问题。 R 4.2改成unicode编码,所以要用别的东西要特别说明。
当我使用最近发布的 R 4.2.0 通过 ODBC 连接到 DB2 数据库时,数据库似乎没有对象。连接到 AWS 没有这样的问题,并且使用旧版本的 R 可以查看对象。
我在 Windows 10,正在连接到 DB2 数据库 (iSeries/AS400)。 我正在使用 odbc 连接。
我可以使用以前版本的 R 进行连接 (64 位 R4.0.2 和 32 位 R4.1.3 - 差异的原因是与 64 位版本的 R 4.1.x 与我的 OS 构建冲突,但这是另一回事).
我最近安装的 R4.2.0 似乎运行良好。它运行 R 代码,我可以通过 ODBC 连接到 AWS 并进行查询——但是当我尝试连接到 DB2 数据库时发生了一些奇怪的事情——连接似乎成功了,但数据库似乎不包含任何对象。查询失败,出现各种错误代码——其中一些包含一些非拉丁字符(但大部分是拉丁文中的英语)。 使用旧版本的 R,一切正常 - 我可以连接并查询 DB2 数据库。
R4.2.0 在 Windows 上的变化之一是字符集,我尝试将字符集设置为旧版本 R 中使用的默认字符集,但这并不能解决问题。 我试过使用 RODBC 包,但遇到了类似的问题。
我使用的代码如下:
library(tidyverse)
library(odbc)
# Connect to DB --------------------------------------------------------
conn <- dbConnect(odbc(),
Driver = "iSeries Access ODBC Driver",
Server = "my.server.location",
system = "MySystemName",
uid = rstudioapi::askForPassword(prompt = "What is your user name?"),
pwd = rstudioapi::askForPassword(prompt = "What is your password?"))
我的会话信息是:
R version 4.2.0 (2022-04-22 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.utf8 LC_CTYPE=English_United Kingdom.utf8
[3] LC_MONETARY=English_United Kingdom.utf8 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.utf8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] odbc_1.3.3 forcats_0.5.1 stringr_1.4.0 dplyr_1.0.8 purrr_0.3.4 readr_2.1.2 tidyr_1.2.0
[8] tibble_3.1.6 ggplot2_3.3.5 tidyverse_1.3.1
注意:这是我的第一个问题,如果我错过了好的练习,我深表歉意。
我通过在 dbConnect
调用中添加 CCSID = 1252
解决了这个问题。 R 4.2改成unicode编码,所以要用别的东西要特别说明。