繁体   English   中英

IBM Cloud db2 django 迁移 python manage.py migrate

[英]IBM Cloud db2 django migrations python manage.py migrate

在 ibm 云上创建了我的第一个 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 应用程序运行迁移。 即使是 session 和内容类型。

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

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 执行 select 操作。

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

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

由于您使用的是 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 计划的其他限制。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM