DBIパッケージのdbListTablesを使用して関数を記述しましたが、わかりませんが警告がスローされます。関数の外で同じコードを実行すると、警告メッセージが表示されません。dbListTablesは、関数を介して呼び出されたときに警告メッセージを表示するのはなぜですか? (R DBI)
情報として、使用されるデータベースはMicrosoft SQL Serverです。
再現例
library(odbc)
library(DBI)
# dbListTables in a function: gives a warning message
dbListTablesTest <- function(dsn, userName, password){
con <- dbConnect(
odbc::odbc(),
dsn = dsn,
UID = userName,
PWD = password,
Port = 1433,
encoding = "latin1"
)
availableTables <- dbListTables(con)
}
availableTables <-
dbListTablesTest(
dsn = "myDsn"
,userName = myLogin
,password = myPassword
)
# dbListTables not within a function works fine (no warnings)
con2 <- dbConnect(
odbc::odbc(),
dsn = "myDsn",
UID = myLogin,
PWD = myPassword,
Port = 1433,
encoding = "latin1"
)
availableTables <- dbListTables(con2)
(ちなみに、私はそれで作業した後、接続を閉じるにはdbDisconnectを使用する必要があり実現しています。しかし、それは同様の警告を投げているようだ。だから、簡単のために私がしましたdbDisconnectを省略。)
警告メッセージ
上記のコードを実行する場合、私は次の警告MESSAを得ます(関数を介して)最初のオプションを使用しているときにGeが、私は2番目のオプション(関数なし)を使用して取得しません。
warning messages from top-level task callback '1'
Warning message:
Could not notify connection observer. trying to get slot "info" from an object of a basic class ("character") with no slots
警告は、上記の機能からその行を省略すると消えてしまうので、明らかにdbListTablesによって引き起こされます。
私の質問
- なぜ私はこの警告メッセージを取得していますか?
- もっと具体的には、私は関数を介してdbListTablesを呼び出すときにそれを取得するだけですか?
- 私は間違っている/私はそれを避けるべきですか?任意の助けを事前に
私のセッション情報
R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Dutch_Belgium.1252 LC_CTYPE=Dutch_Belgium.1252 LC_MONETARY=Dutch_Belgium.1252 LC_NUMERIC=C LC_TIME=Dutch_Belgium.1252
attached base packages:
[1] stats graphics grDevices utils datasets tools methods base
other attached packages:
[1] DBI_0.7 odbc_1.1.3
loaded via a namespace (and not attached):
[1] bit_1.1-12 compiler_3.4.2 hms_0.3 tibble_1.3.4 Rcpp_0.12.13 bit64_0.9-7 blob_1.1.0 rlang_0.1.2
ありがとう!
「dbGetQuery」を使用して同じ警告が表示されるため、これはより広い問題と思われます。 – JAD