Получение ORA-00918: в столбце неоднозначно определена ошибка, при которой попытка открыть django административную страницу после обновления до django 3.03 с 2.0 - PullRequest
0 голосов
/ 15 февраля 2020

Получение django .db.utils.DatabaseError: ORA-00918: неоднозначно определенная ошибка столбца при попытке открыть Django страницу администратора. Вот ошибка:

повышение dj_exc_value.with_traceback (трассировка) из файла exc_value в _execute вернуть файл self.cursor.execute (sql, params) "/venomscribe/lib/python3.6/site-packages/django/db/backends/oracle/base.py", строка 514, в выполнить возврат self.cursor.execute (запрос, self._param_generator (params)) django .db.utils.DatabaseError: ORA-00918: столбец неопределенно определен

Запрос

SELECT "DJANGO_ADMIN_LOG"."ID",
       "DJANGO_ADMIN_LOG"."ACTION_TIME",
       "DJANGO_ADMIN_LOG"."USER_ID",
       "DJANGO_ADMIN_LOG"."CONTENT_TYPE_ID",
       "DJANGO_ADMIN_LOG"."OBJECT_ID",
       "DJANGO_ADMIN_LOG"."OBJECT_REPR",
       "DJANGO_ADMIN_LOG"."ACTION_FLAG",
       "DJANGO_ADMIN_LOG"."CHANGE_MESSAGE",
       "AUTH_USER"."ID",
       "AUTH_USER"."PASSWORD",
       "AUTH_USER"."LAST_LOGIN",
       "AUTH_USER"."IS_SUPERUSER",
       "AUTH_USER"."USERNAME",
       "AUTH_USER"."FIRST_NAME",
       "AUTH_USER"."LAST_NAME",
       "AUTH_USER"."EMAIL",
       "AUTH_USER"."IS_STAFF",
       "AUTH_USER"."IS_ACTIVE",
       "AUTH_USER"."DATE_JOINED",
       "DJANGO_CONTENT_TYPE"."ID",
       "DJANGO_CONTENT_TYPE"."APP_LABEL",
       "DJANGO_CONTENT_TYPE"."MODEL"
  FROM "DJANGO_ADMIN_LOG"
  INNER JOIN "AUTH_USER"
    ON ("DJANGO_ADMIN_LOG"."USER_ID" = "AUTH_USER"."ID")
  LEFT OUTER JOIN "DJANGO_CONTENT_TYPE"
    ON ("DJANGO_ADMIN_LOG"."CONTENT_TYPE_ID" = "DJANGO_CONTENT_TYPE"."ID")
  WHERE "DJANGO_ADMIN_LOG"."USER_ID" = :arg0
  ORDER BY "DJANGO_ADMIN_LOG"."ACTION_TIME" DESC
  FETCH FIRST 10 ROWS ONLY

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Это была проблема с системными требованиями. Я использовал oracle 12.1, который не совместим с django 3.0.3. Понижение до 2.2 решило проблему.

0 голосов
/ 15 февраля 2020

Вы извлекаете DJANGO_ADMIN_LOG.ID, AUTH_USER.ID и DJANGO_CONTENT_TYPE.ID, поэтому вы пытаетесь иметь три идентификатора столбца в наборе результатов. Это не разрешено Я предлагаю вам использовать псевдонимы этих столбцов, чтобы вы могли различать guish между ними:

SELECT l.ID AS DJANGO_ADMIN_LOG_ID,
       l.ACTION_TIME,
       l.USER_ID,
       l.CONTENT_TYPE_ID,
       l.OBJECT_ID,
       l.OBJECT_REPR,
       l.ACTION_FLAG,
       l.CHANGE_MESSAGE,
       u.ID AS AUTH_USER_ID,
       u.PASSWORD,
       u.LAST_LOGIN,
       u.IS_SUPERUSER,
       u.USERNAME,
       u.FIRST_NAME,
       u.LAST_NAME,
       u.EMAIL,
       u.IS_STAFF,
       u.IS_ACTIVE,
       u.DATE_JOINED,
       t.ID AS DJANGO_CONTENT_TYPE_ID,
       t.APP_LABEL,
       t.MODEL
  FROM DJANGO_ADMIN_LOG l
  INNER JOIN AUTH_USER u
    ON l.USER_ID = u.ID
  LEFT OUTER JOIN DJANGO_CONTENT_TYPE t
    ON l.CONTENT_TYPE_ID = t.ID
  WHERE l.USER_ID = :arg0
  ORDER BY l.ACTION_TIME DESC
  FETCH FIRST 10 ROWS ONLY

Я также предлагаю вам использовать пробелы и псевдонимы таблиц, чтобы сделать запрос более легким для чтения.

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