我正在一个大学项目中,我应该使用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 migration
要执行的操作: 应用所有迁移:管理,身份验证,内容类型,会话,测试正在运行的迁移:应用contenttypes.0001_initial ... Traceback (最近通话最近):文件 “ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-
_execute中的packages \ django \ db \ backends \ utils.py“,第83行 返回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))cx_Oracle.DatabaseError:ORA-00955:名称已经被 现有对象上述异常是以下异常的直接原因:
回溯(最近一次通话最后一次):文件“ 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中 utility.execute()文件“ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ core \ management__init __。py”, 行375,在执行 self.fetch_command(subcommand).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行,在执行中 输出= 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 \ site-packages \ django \ db \ migrations \ executor.py”, 第117行,正在迁移 状态= self._migrate_all_forwards(状态,计划,完整计划,fake = fake,fake_initial = fake_initial)文件 “ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ migrations \ executor.py”, _migrate_all_forwards中的第147行 状态= 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中 状态= migration.apply(状态,模式编辑器)文件“ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ migrations \ migration.py”, 第124行,适用 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 \ site-packages \ django \ db \ backends \ base \ schema.py”, create_model中的第312行 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,许多,上下文)文件“ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py”, _execute中的第85行 返回self.cursor.execute(sql,params)文件“ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ utils.py”, 第89行,退出 从exc_value文件“ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py”中提高dj_exc_value.with_traceback(traceback), _execute中的第83行 返回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.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命令行进行了检查,并且不存在这样的数据库表或视图。
p.s:makemigrations命令正常运行,并且还创建了migratiosn文件。
答案 0 :(得分:1)
如果编辑以下文件,则可以打印出sql查询: “ C:\ Users \ Hp \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ oracle \ base.py 在513行上,在调用execute函数之前,添加:
print(f'query')
重新运行迁移,您会看到运行失败的sql。删除或重命名数据库中的表/对象。