我'm having trouble connecting to a DB2 database via ODBC. I' m在Windows系统上,并在ODBC管理器中配置了数据源名称 . 当我测试连接时,我得到 Connection tested successfully.
. 我还可以使用CLI和ODBC在IBM的DB2 Configuration Assistant中成功测试连接 .
我无法在R内连接 . 我已经尝试了RODBC和odbc包,结果是一样的 . 我的目的是执行一个简单的查询来验证连接 . 当我运行以下R脚本时,我收到一个错误 . 这是我的伪代码 .
library('RODBC')
myQuery <- 'SELECT COLUMN1, COLUMN2 FROM DATABASE.TABLE FETCH FIRST 10 ROWS ONLY;'
cnxn <- odbcConnect('myDSN')
data <- sqlQuery(channel=cnxn, query=myQuery)
odbcCloseAll()
这是我得到的错误 .
Error in sqlQuery(channel = cnxn, query = myQuery) :
first argument is not an open RODBC channel
In addition: Warning messages:
1: In RODBC::odbcDriverConnect("DSN=myDSN") :
[RODBC] ERROR: state 58031, code -1031, message [IBM][CLI Driver] SQL1031N The database directory cannot be found on the indicated file system. SQLSTATE=58031
2: In RODBC::odbcDriverConnect("DSN=myDSN") : ODBC connection failed
我通过实验了解到我的脚本永远不会发送查询 . odbcConnect命令会生成此错误 .
我无权访问服务器本身,只能访问数据库 . 有什么我可以做的或尝试自己解决这个问题,而不必经过支持吗?
EDIT:
我现在cataloged my database,测试连接在3个位置成功,ODBC数据源管理员,Db2命令行和Db2配置助手 . 我知道有's no issue with permissions, as I can execute queries via IBM Query Management Facility. I believe this is an issue with either my driver or my system'的PATH声明,但我不确定如何追踪它 .
2 回答
根据DB2手册here
SQL1031N The database directory cannot be found on the indicated file system.
Explanation
找不到系统数据库目录或本地数据库目录 . 尚未创建数据库或未正确编目 . 该命令无法处理 .
User response
验证是否使用正确的路径规范创建了数据库 . Catalog Database命令具有path参数,该参数指定数据库所在的目录 .
sqlcode:-1031
sqlstate:58031
采用非RODBC方法,以下方法适用于连接R和DB2 . 假设您知道下面的所有信息,您将需要下载IBM DB2 jar文件并在本例中将其定位在我的机器上名为“IBM”的文件夹中 .
注意:有两种类型的可用jar文件:db2jcc.jar和db2jcc4.jar . 以下示例使用db2jcc.jar .