#29736 closed Bug (duplicate)
Admin interface causes ORA-00918: column ambiguously defined
Reported by: | Rafael Zinezi Araújo | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 2.1 |
Severity: | Normal | Keywords: | oracle admin exception |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description
As per ticket #29630 same bug.
Attempting to log in to the admin interface causes a SQL exception to be raised when using an Oracle database. The exception throw by Oracle is ... ORA-00918: column ambiguously defined.
Database: Oracle 12.1
cx_Oracle version: 6.4.1
Python 3.5.2
Steps to reproduce...
1) Start a project
2) Configure the use of Oracle as a database
3) Execute makemigrations
4) Execute migrate
5) Execute createsuperuser
6) Execute runserver
7) Open localhost:8000/admin in a browser
8) Enter admin username/password and click to log in
Was able to extract the offending query from traceback and found that when base.html runs it, in this case, it has multiple columns named ID (from 3 tables: Django_Admin_Log, Auth_User and Django_Content_Type).
Attachments (2)
Change History (5)
comment:2 by , 6 years ago
by parsing and running the query in a script the same error occurs.
by aliasing the columns it goes away.
SELECT DJANGO_ADMIN_LOG.ID logid,
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 authid,
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 contid,
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)
ORDER BY DJANGO_ADMIN_LOG.ACTION_TIME DESC
FETCH FIRST 10 ROWS ONLY
by , 6 years ago
Attachment: | id ora bug.2.jpg added |
---|
screenshot of the query highlighting my "theory"
full traceback debug @pastebin