我正在尝试在SQL Server 2017中删除表。当我检查数据库时,它看起来好像表已消失。但是,根据odbc,该表仍然存在。在我的示例中,我正在将表写入默认模式。然后,我将表从默认架构复制到新架构中的新表中。然后,将表放到默认架构中。但是,当我运行dbExistsTable()
时,它返回TRUE。
SQL Server 2017
dbWriteTable(con, "iris", iris)
dbExecute(con, "SELECT * INTO [schema].iris FROM iris")
dbExecute(con, "DROP TABLE iris")
dbExistsTable(con, "iris") # returns TRUE, should be FALSE
dbListTables(con) # iris appears here, it should not appear here
在下面的示例中,我将注意到此错误未出现,这使我相信将表复制到另一个模式时发生了某些事情。
dbWriteTable(con, "iris", iris)
dbExecute(con, "SELECT * INTO iris2 FROM iris")
dbExecute(con, "DROP TABLE iris")
dbExistsTable(con, "iris") # <- returns false as expected
dbListTables(con) # <- iris table does not appear here
将新创建的表放入非默认模式后,此问题已解决。但是,此行为是错误的。我应该在dbExistsTable()中指定架构名称以发现该表存在,是吗?
会话信息
devtools::session_info()
─ Session info ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
setting value
version R version 3.6.0 (2019-04-26)
os Ubuntu 18.04.2 LTS
system x86_64, linux-gnu
ui RStudio
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz America/New_York
date 2019-06-18
─ Packages ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
package * version date lib source
assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.5.3)
backports 1.1.4 2019-04-10 [1] CRAN (R 3.5.3)
bit 1.1-14 2018-05-29 [1] CRAN (R 3.5.3)
bit64 0.9-7 2017-05-08 [1] CRAN (R 3.5.3)
blob 1.1.1 2018-03-25 [1] CRAN (R 3.5.3)
callr 3.2.0 2019-03-15 [1] CRAN (R 3.5.3)
cli 1.1.0 2019-03-19 [1] CRAN (R 3.5.3)
colorspace 1.4-1 2019-03-18 [1] CRAN (R 3.5.3)
crayon 1.3.4 2017-09-16 [1] CRAN (R 3.5.3)
DBI * 1.0.0 2018-05-02 [1] CRAN (R 3.5.3)
dbplyr * 1.4.2 2019-06-17 [1] CRAN (R 3.6.0)
desc 1.2.0 2018-05-01 [1] CRAN (R 3.5.3)
devtools 2.0.2 2019-04-08 [1] CRAN (R 3.5.3)
digest 0.6.19 2019-05-20 [1] CRAN (R 3.6.0)
dplyr * 0.8.1 2019-05-14 [1] CRAN (R 3.6.0)
evaluate 0.14 2019-05-28 [1] CRAN (R 3.6.0)
forcats * 0.4.0 2019-02-17 [1] CRAN (R 3.6.0)
fs 1.3.1 2019-05-06 [1] CRAN (R 3.6.0)
ggplot2 * 3.2.0 2019-06-16 [1] CRAN (R 3.6.0)
glue 1.3.1 2019-03-12 [1] CRAN (R 3.5.3)
gtable 0.3.0 2019-03-25 [1] CRAN (R 3.5.3)
here * 0.1 2017-05-28 [1] CRAN (R 3.6.0)
hms 0.4.2 2018-03-10 [1] CRAN (R 3.5.3)
htmltools 0.3.6 2017-04-28 [1] CRAN (R 3.5.3)
knitr 1.23 2019-05-18 [1] CRAN (R 3.6.0)
lazyeval 0.2.2 2019-03-15 [1] CRAN (R 3.5.3)
magrittr 1.5 2014-11-22 [1] CRAN (R 3.5.3)
memoise 1.1.0 2017-04-21 [1] CRAN (R 3.5.3)
munsell 0.5.0 2018-06-12 [1] CRAN (R 3.5.3)
odbc * 1.1.6 2018-06-09 [1] CRAN (R 3.5.3)
pillar 1.4.1 2019-05-28 [1] CRAN (R 3.6.0)
pkgbuild 1.0.3 2019-03-20 [1] CRAN (R 3.5.3)
pkgconfig 2.0.2 2018-08-16 [1] CRAN (R 3.5.3)
pkgload 1.0.2 2018-10-29 [1] CRAN (R 3.5.3)
prettyunits 1.0.2 2015-07-13 [1] CRAN (R 3.5.3)
processx 3.3.1 2019-05-08 [1] CRAN (R 3.6.0)
ps 1.3.0 2018-12-21 [1] CRAN (R 3.5.3)
purrr * 0.3.2 2019-03-15 [1] CRAN (R 3.5.3)
R6 2.4.0 2019-02-14 [1] CRAN (R 3.5.3)
Rcpp 1.0.1 2019-03-17 [1] CRAN (R 3.5.3)
readr * 1.3.1 2018-12-21 [1] CRAN (R 3.6.0)
remotes 2.0.4 2019-04-10 [1] CRAN (R 3.5.3)
rlang 0.3.4 2019-04-07 [1] CRAN (R 3.5.3)
rmarkdown * 1.13 2019-05-22 [1] CRAN (R 3.6.0)
rprojroot 1.3-2 2018-01-03 [1] CRAN (R 3.6.0)
rstudioapi 0.10 2019-03-19 [1] CRAN (R 3.5.3)
scales 1.0.0 2018-08-09 [1] CRAN (R 3.5.3)
sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.5.3)
tibble 2.1.3 2019-06-06 [1] CRAN (R 3.6.0)
tidyr * 0.8.3 2019-03-01 [1] CRAN (R 3.5.3)
tidyselect 0.2.5 2018-10-11 [1] CRAN (R 3.5.3)
usethis 1.5.0 2019-04-07 [1] CRAN (R 3.5.3)
withr 2.1.2 2018-03-15 [1] CRAN (R 3.5.3)
xfun 0.7 2019-05-14 [1] CRAN (R 3.6.0)
答案 0 :(得分:0)
dbExistsTable()可能会执行类似于“ 从information_schema.tables中选择1,其中table_name ='iris'”的内容,这将找到 [schema]。 iris 并返回true,无论是否已删除 [default] .iris 。