Возникла проблема DRF при попытке проверки команды inspectdb: # Ошибка была: ORA-00904: «USER_TABLES». „DEFAULT_COLLATION“: недопустимый идентификатор

У меня есть база данных Oracle версии 11.5.10.2. Недавно я изучил DjangoRestFramework для того, чтобы выполнить собственные API.

Сначала команда python manage.py runserver не работает из-за невозможности подключения к базе данных. Затем я импортировал модуль oracledb в файл settings.py и добавил следующую команду:

oracledb.init_oracle_client(lib_dir=r'C:\\oracle\\instantclient_23_6')

Без клиента не появляется ни одного соединения с базой данных Oracle. После этого команда 'python manage.py runserver' подключается к БД Oracle без ошибок. Так как мне не нужно делать никаких изменений в базе данных из-за большого количества финансовых записей, я бы загрузил структуру моделей для необходимых мне таблиц только для API, используя протокол GET HTTP. Таким образом, не все таблицы нужно проверять и переносить в файл models.py.

Так, для тестирования я добавляю следующую команду в командную строку: 'python manage.py inspectdb ap.ap_invoices_all' и на выходе получаю следующий текст:

# This is an auto-generated Django model module.

# You'll have to do the following manually to clean this up:

# \* Rearrange models' order

# \* Make sure each model has one field with primary_key=True

# \* Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior

# \* Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table

# Feel free to rename the models, but don't rename db_table values or field names.

from django.db import models

# Unable to inspect table 'ap.ap_invoices_all'

# The error was: ORA-00904: "USER_TABLES"."DEFAULT_COLLATION": invalid identifier

Справка: https://docs.oracle.com/error-help/db/ora-00904/%60

Кто-нибудь знает причину? Кто-нибудь знает, были ли какие-нибудь изменения для того, чтобы Django работал с Oracle 11?

Я попытался загрузить структуру таблицы Oracle ap.ap_invoices_all для файла models.py. Я ожидал увидеть модель в файле models.py.

Вернуться на верх