Я пытаюсь использовать tryCatch
, запрашивая мою базу данных PostgreSQL от R. В основном запрос работает, но я не могу уловить ошибки и отреагировать на них. Вот примерКак использовать dbGetQuery в tryCatch с PostgreSQL?
insert_rows <- function(dframe,con){
out <- list()
for(i in 1:nrow(dframe)){
query <- .... some insert statement
tryCatch({dbGetQuery(con,query)},error=function(e) print("caught"))
}
}
Когда я создаю ошибку, например. путем ввода повторяющихся записей в уникальные PK, я вижу ошибку и предупреждение PostgreSQL, но это стандартная распечатка от RPostgreSQL
. Я использовал tryCatch
в других контекстах, и он всегда работал таким образом. Я использовал dbGetQuery
много, но я не могу заставить их работать вместе. Кроме того, включение tryCatch в список очень помогло.
'dbSendquery' действительно работает. Не знаю, почему я никогда не думал об этом. Тем не менее, было бы интересно понять, почему «dbGetQuery» терпит неудачу в этом вопросе. –
@MattBannert Я некоторое время боролся с этой проблемой. Это связано с тем, как был написан код RPostgreSQL, не относящийся к R-коду (я думаю, C/C++, прошло некоторое время с тех пор, как я посмотрел на него). Он испускает ошибку для консоли, не поднимая ошибку в R. – russellpierce