【问题标题】:Loopback (DB2) - Can not create an instance of PersistedModel that uses a schema other than the useridLoopback (DB2) - 无法创建使用用户 ID 以外的模式的 PersistedModel 实例
【发布时间】:2020-08-28 21:26:57
【问题描述】:

我正在尝试定义一个基于 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 实例恰好位于 System Z 上。我创建了一个名为 my_userid.MY_TABLE 的表,它可以工作,但是对于我们尝试构建的解决方案,需要多个模式。

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

【问题讨论】:

  • 你有正确的权限吗?

标签: db2 loopbackjs loopback


【解决方案1】:

您使用的是什么 LoopBack 连接器?什么版本?你能检查一下你的node_modules文件夹中安装了哪个版本的loopback-ibmdb吗?

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 而不是hostname 和username 等单个字段来配置数据库连接?

在您的数据源配置 JSON 中:

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

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 1970-01-01
    • 2016-06-21
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    相关资源
    最近更新 更多