首页 文章

无法使用Django oracle12c在数据库中创建表

提问于
浏览
0

我正在研究一个大学项目,我应该使用oracle数据库作为后端,我选择使用django作为编程语言 . 我已成功连接django和oracle 12c,并且还安装了cx_Oracle . 但是当我尝试运行命令时

py manage.py migrate

出现以下错误 .

Windows PowerShell版权所有(C)Microsoft Corporation . 版权所有 . PS C:\ Users \ Hp \ Desktop \ onlinepharma> py manage.py migrate要执行的操作:应用所有迁移:admin,auth,contenttypes,sessions,testing运行迁移:应用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行,在execute return self.cursor中 . execute(query,self._param_generator(params))cx_Oracle.DatabaseError:ORA-00955:name已被现有对象使用上述异常是以下异常的直接原因:Traceback(最近一次调用last):文件“manage” .py“,第15行,在execute_from_command_line(sys.argv)文件”C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management__init __ . py“,第381行,在execute_from_command_line utili中ty.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)在run_from_argv self中的文件“C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management \ base.py”,第316行 . 执行(* args,** cmd_options)执行文件“C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management \ base.py”,第353行output = self.handle(* args,** options)文件“C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management \ base.py”,line 83,in wrapped 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 \ site-packages \ django \ db \ migrations \ executor.py“,第117行,在迁移中state = self._migrate_all_forwards(state,plan,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(state,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 state = migration.apply(state,schema_editor)文件”C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ migrations \ migration.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(model)文件”C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ LIB \站点包\ Django的\ DB \巴克nds \ base \ schema.py“,第312行,在create_model中自执行(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() . 执行(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 \程序\ 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 \应用程序数据\本地\ PROGRA ms \ Python \ Python37 \ lib \ site-packages \ django \ db \ utils.py“,第89行,退出时从exc_value文件中提升dj_exc_value.with_traceback(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(query,self._param_generator(params))django.db.utils . 数据库错误:ORA-00955:名称已被现有对象使用

这是我的model.py文件

from django.db import models

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

但我已经检查过使用sql命令行,并且不存在这样的db表或视图 .

p.s:makemigrations命令正常工作,并且还创建了migratiosn文件 .

1 回答

  • 1

    您可以打印出来的SQL查询,如果您编辑以下文件:“C:\用户\ HP \应用程序数据\本地\程序\ Python的\ Python37 \ LIB \站点包\ Django的\ DB \后端\ ORACLE \ base.py在第513行,在调用execute函数之前添加:

    print(f'query')
    

    重新运行迁移,您可以看到无法运行的sql . 删除或重命名db中的表/对象 .

相关问题