回送DB2-无法创建使用除userid之外的模式的PersistedModel实例

问题描述

我试图定义一个基于PersistedModel的模型来访问DB2中的表,将其命名为MY_SCHEMA.MY_TABLE

我基于PersistedModel创建了带有数据源(MY_TABLE)的模型datasources.json,该数据源的定义包括属性"schema": "MY_SCHEMA"。数据源还包含用于连接的用户ID my_userid

当前行为

当我尝试为此模型调用API时,它将尝试访问表my_userid.MY_TABLE

预期行为

它应该访问MY_SCHEMA.MY_TABLE

该DB2实例恰好在系统Z上。我创建了一个名为my_userid.MY_TABLE的表,该表可以工作,但是对于我们尝试构建的解决方案,需要多个模式。

请注意,这似乎只是System Z上Db2的问题。我可以在Db2 LUW上更改架构。

解决方法

您使用的是哪种LoopBack连接器?什么版本的?您还可以检查loopback-ibmdb文件夹中安装了哪个版本的node_modules吗?

AFAICT,LoopBack的DB2相关连接器支持schema字段,请参见https://github.com/strongloop/loopback-ibmdb/blob/master/lib/ibmdb.js#L96-L100

self.schema = this.username;
if (settings.schema) {
  self.schema = settings.schema.toUpperCase();
}

self.connStr += ';CurrentSchema=' + self.schema;

您是否考虑过使用DSN而不是像hostnameusername这样的单个字段来配置数据库连接?

在您的数据源配置JSON中:

"dsn": "DATABASE={dbname};HOSTNAME={hostname};UID={username};PWD={password};CurrentSchema=MY_SCHEMA"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...