我正在使用RJDBC查询R中的数据库.查询是根据从文件读入的数据构建的.这些查询可能会变得很长,并且可能包含不存在的列(导致错误).
下面是一个简化示例,它将文件作为输入,并从文件生成运行2查询.
table column drinks cost drinks sugar drinks volume food cost
SELECT column, cost, sugar FROM drinks;
SELECT cost FROM food;
Run Code Online (Sandbox Code Playgroud)
由于这些查询可能会变得很长,因此数据库中的任何错误通常会在有用信息之前被截断.我目前的一个错误是:
错误[2018-05-16 16:53:07]错误处理表data_baseline_biosamples为DAR-2018-00008原始错误消息:.verify.JDBC.result中的错误(r,"无法检索JDBC结果集",::Unable检索SELECT ed.studyid的JDBC结果集,{非常长的列列表},ct.nmr_xl_vldl_pl,ct.nmr_xl_
由于数据库错误包括密钥信息之前的整个查询,因此截断会删除有用的信息以解决问题.
在这种情况下,错误消息可能以这样的结尾:
(第1行,'littlefeltfangs'拥有的表'data_biosamples'不包含列'sample_source'.)
如何记录数据库发送的完整错误消息或以其他方式提取该消息的最后部分?
我在tryCatch中捕获错误并使用futile.logger将错误传递到日志文件中.截断时的总错误长度为8219个字符,其中8190个出现在数据库中.