IBM Cloud db2 django migrations python manage.py migrate - PullRequest
1 голос
/ 10 апреля 2020

Создал мою первую базу данных ibm db2 в облаке ibm и связал ее с 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 migrate не выдаст ошибку.

Или что-то не так я делаю в самом приложении django. (НАЧАЛЬНЫЕ МИГРАЦИИ)

1 Ответ

1 голос
/ 10 апреля 2020

Поскольку вы используете план LITE (бесплатно), в настоящее время вы не получаете никакого доступа к SYSIBMADM.ADMINTABINFO в облаке IBM Db2-on-cloud. Существуют и другие ограничения при использовании плана LITE, которые вытекают из того, что решение является мультитенантным. И хотя вы можете обойти одно ограничение, вы быстро найдете другое ограничение.

В число ваших вариантов входит разработка с использованием локальной (не docker или dockerized) версии сообщества Db2 перед использованием $$ paid $$ версия Db2-on-cloud, которая предоставляет вам необходимый доступ.

Но в любом случае проще использовать Db2 communinty для разработки, потому что вы получаете весь необходимый контроль.

Другой обходной путь, так как ibm_db_ django с открытым исходным кодом, вы также можете быть в состоянии изменить этот код, чтобы не использовать запрещенные объекты, в случае, если более новая версия django еще не сделала этого. Например, причина, по которой ibm_db_ django ссылается на sysibmam.admintabinfo, заключается в том, чтобы определить, требуется ли повторный запуск после выполнения операторов ALTER TABLE, но вы можете ( только для целей разработки ) изменить эту проверку. Но, как указывалось ранее, вы, вероятно, столкнетесь с другими ограничениями плана LITE.

Вкратце: используйте бесплатную версию сообщества или заплатите, чтобы получить требуемый доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...