Возникла проблема 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.