Невозможно создать таблицу в базе данных, используя Django oracle12c - PullRequest
0 голосов
/ 29 сентября 2018

Я работаю над проектом колледжа, для которого я должен использовать базу данных Oracle в качестве бэкэнда, и я решил работать с django в качестве языка программирования.Я успешно соединил django с oracle 12c, а также установил cx_Oracle.Но когда я пытаюсь выполнить команду

py manage.py migrate

, появляются следующие ошибки:

Windows PowerShell Copyright (C) Microsoft Corporation.Все права защищены.

PS C: \ Users \ Hp \ Desktop \ onlinepharma> py manage.py migrate
Выполняемые операции: применить все миграции: admin, auth, типы содержимого, сеансы, тестирование. Запущенные миграции:Применение contenttypes.0001_initial ... Traceback (последний вызов был последним): файл "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-
packages \ django \ db \ backends \ utils.py ", строка 83, в _execute возвращает файл self.cursor.execute (sql)" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ oracle\ base.py ", строка 513, при выполнении возвращает self.cursor.execute (запрос, self._param_generator (params)) cx_Oracle.DatabaseError: ORA-00955: имя уже используется существующим объектом

вышеупомянутое исключение было прямой причиной следующего исключения:

Трассировка (последний вызов был последним): файл "manage.py", строка 15, в execute_from_command_line (sys.argv) Файл "C: \ Users \ Hp\ AppData \ Local \ Программы \ Python \ Python37 \ Lib \ сайт-пакеты \ Джанго \ ядро\ management__init __. py ", строка 381, в файле execute_from_command_line utility.execute ()" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management__init __. py ",строка 375, в выполнимой self.fetch_command (подкоманда) .run_from_argv (self.argv) Файл "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management \ base.py ", строка 316, в файле run_from_argv self.execute (* args, ** cmd_options)" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management\ base.py ", строка 353, в файле output output = self.handle (* args, ** options) Файл" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django "\ core \ management \ base.py ", строка 83, во вложенном файле res = handle_func (* args, ** kwargs)" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages\ django \ core \ management \ commands \ migrate.py ", строка 203, в дескрипторе fake_initial = fake_initial, файл" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ s "ite-packages \ django \ db \ migrations \ executor.py ", строка 117, в состоянии миграции = self._migrate_all_forwards (состояние, план, full_plan, fake = fake, fake_initial = fake_initial) Файл" C: \ Users \ Hp \ AppData\ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ migrations \ executor.py ", строка 147, в _migrate_all_forwards state = self.apply_migration (состояние, миграция, fake = fake, fake_initial = fake_initial) Файл"C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ migrations \ executor.py", строка 244, в состоянии apply_migration =igration.apply (состояние, schema_editor)Файл "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ migrations \igration.py", строка 124, в файле apply operation.database_forwards (self.app_label, schema_editor, old_state, project_state) Файл "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ migrations \ operations \ models.py", строка 91, в database_forwards schema_editor.Файл create_model (модель) "C: \ Users \ Hp \ AppДанные \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ base \ schema.py ", строка 312, в файле create_model self.execute (sql, params или None), файл" C: \ Users "\ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ base \ schema.py ", строка 133, в исполненииcursor.execute (sql, params) Файл "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py", строка 100, при выполнении выполнитьsuper (). execute (sql, params) Файл "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py", строка 68, ввыполнить возврат self._execute_with_wrappers (sql, params, many = False, executor = self._execute) Файл "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends\ utils.py ", строка 77, в _execute_with_wrappers возвращает исполнителя (sql, params, many, context) Файл" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db\ backends \ utils.py ", строка 85, в _execute возвращает файл self.cursor.execute (sql, params) Файл" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django\ db \ utils.py ", строка 89, в выход повышение dj_exc_value.with_traceback (traceback) из файла exc_value" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-пакеты \ django \ db \ backends \ utils.py ", строка 83, в _execute возвращают self.cursor.execute (sql) файл" C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-пакеты \ django \ db \ backends \ oracle \ base.py ", строка 513, при выполнении возвращают self.cursor.execute (запрос, self._param_generator (params)) django.db.utils.DatabaseError: ORA-00955: имя равноуже используется существующим объектом

Вот мой файл model.py

from django.db import models

# Create your models here.
class yoman(models.Model):
text=models.CharField(max_length=200)

Но я проверил с помощью командной строки sql, и такой таблицы или представления БД не существует.

ps: команда makemigrations работает правильно, и файл migratiosn также был создан.

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете распечатать SQL-запрос, если отредактируете следующий файл: "C: \ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ oracle \ base.py В строке 513 перед вызовом функции execute добавьте:

print(f'query')

Перезапустите миграцию, и вы увидите sql, который не запускается. Либо удалите, либо переименуйте таблицу / объект в БД.

...