[英]django.db.migrations.exceptions.NodeNotFoundError: upon running "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.