【问题标题】:IBM Cloud db2 django migrations python manage.py migrateIBM Cloud db2 django 迁移 python manage.py migrate
【发布时间】:2020-04-10 18:35:55
【问题描述】:

在 ibm cloud 上创建了我的第一个 ibm db2 数据库并将其与 django 连接。使用以下设置:

 'default':{
        'ENGINE'     : 'ibm_db_django',
         'NAME'       : 'BLUDB',
         'USER'       : 'xxxxxxxxxxxxxxxx',
         'PASSWORD'   : 'xxxxxxxxxxxxxxxx',
         'HOST'       : 'dashdb-xxxxxxx-sbox-xxxxxxxxxx.services.eu-gb.bluemix.net',
         'PORT'       : '50000',
         'PCONNECT'   :  True,
    }

连接工作得很好,因为我可以为我添加的自定义 django 应用程序运行迁移。即使是会话和内容类型。

运行身份验证和管理员迁移时出现问题。 我收到以下错误消息:

Exception('SQLNumResultCols failed: [IBM][CLI Driver][DB2/LINUXX8664] SQL0551N  The statement failed because the authorization ID does not have the required authorization or privilege to perform the operation.  Authorization ID: "XXXXXXXX".  Operation: "SELECT". Object: "SYSIBMADM.ADMINTABINFO".  SQLSTATE=42501 SQLCODE=-551'

我了解我没有权限对 SYSIBMADM.ADMINTABINFO 执行选择操作。

我的问题是如何给自己(管理员帐户)权限,以便我的 python manage.py migrate 不会抛出错误。

或者我在 django 应用程序本身中做错了什么。 (初始迁移)

【问题讨论】:

  • 您使用的是 Db2-on-cloud LITE 计划吗?
  • 是的。我正在使用免费帐户
  • 在 LITE 计划中,您目前无法访问 sysibmadm.admintabinfo。要解决此问题,请使用本地数据库(例如使用 Db2 社区版),并在那里创建元数据表。然后您可以在 bludb 云数据库中手动创建这些元数据表,或者只是继续在本地使用 Db2 社区版进行所有开发。
  • 我正在做同样的事情,目前正在下载 ibm cloud db 2 C 版。我在 stackoverflow 的某个地方读到它,免费帐户 django 迁移不运行。但我不确定特权的事情

标签: python django db2


【解决方案1】:

由于您使用的是 LITE 计划(免费),因此您目前无法访问 IBM Db2-on-cloud 上的 SYSIBMADM.ADMINTABINFO。作为多租户解决方案,使用 LITE 计划时还有其他限制。虽然您可以解决一个限制,但您很快就会发现另一个限制。

您的选择包括使用本地(非 docker 或 dockerized)Db2 社区版本进行开发,然后再使用为您提供所需访问权限的 Db2-on-cloud 的 $$paid$$ 版本。

但无论如何,使用 Db2 社区版进行开发更容易,因为您可以获得所需的所有控制权。

另一种解决方法,因为 ibm_db_django 是开源的,您也可以修改该代码以不使用受限对象,以防新版本的 django 尚未完成。例如,ibm_db_django 引用sysibmam.admintabinfo 的原因是确定在运行ALTER TABLE 语句后是否需要重组,但您可以(仅出于开发目的)更改该检查。但如前所述,您可能会遇到 LITE 计划的其他限制。

简而言之:使用免费的社区版或付费以获得所需的访问权限。

【讨论】:

  • 我应该免费试用 1 个月的 plus 计划吗?并在 db2 控制台上授予权限并运行迁移。现在解决问题的时间太长了
  • 您应该与 IBM 支持人员核实您是否实际上通过 plus 计划获得了所需的访问权限(即不要假设它)。
  • 我打开票他们关闭它说我们不支持你购买。好的,让我设置 db2 c 版本进行迁移 --->> 生成 SQL 并在 db2 上执行,并在某个时候让您知道结果:D
  • 谢谢你,我会升级的
猜你喜欢
  • 2013-12-12
  • 2019-11-11
  • 2015-11-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 2017-07-04
相关资源
最近更新 更多