在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应用程序运行迁移。即使是会话和内容类型。
在为auth和admin运行迁移时会出现问题。我收到以下错误消息:
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 migration不会引发错误。
或者我在django应用程序本身中做错了什么。(初始迁移)
使用LITE计划(免费)时,当前SYSIBMADM.ADMINTABINFO
在IBM Db2-on-cloud上没有任何访问权限。使用LITE计划时,还有其他一些限制,这些限制来自于多租户解决方案。尽管您可以解决一个限制,但很快就会发现另一个限制。
您的选择包括使用本地(非docker或dockerized)Db2社区版本进行开发,然后使用$ d $$$版本的Db2-on-cloud来提供所需的访问权限。
但是无论如何,使用Db2社区版本进行开发会更容易,因为您可以获得所需的所有控件。
另一个解决方法是,由于ibm_db_django是开放源代码,因此,在较新版本的django尚未完成的情况下,您也可以修改该代码以不使用受限对象。例如,ibm_db_django引用的原因sysibmam.admintabinfo
是为了确定在运行ALTER TABLE
语句后是否需要重组,但是您可以(仅出于开发目的)更改该检查。但是,如前所述,您很可能会遇到LITE计划的其他限制。
简而言之:使用免费的社区版或付费以获取所需的访问权限。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句