django.db.utils.DatabaseError: ORA-00955: name is already used by an existing object

【问题】django.db.utils.DatabaseError: ORA-00955: name is already used by an existing object。。。模型迁徙python manage migrate时遇到这个问题

【解决办法】  提示错误消息

  File "D:\install\anaconda\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
    return self.cursor.execute(sql)
  File "D:\install\anaconda\lib\site-packages\django\db\backends\oracle\base.py", line 534, in execute
    return self.cursor.execute(query, self._param_generator(params))

既然报数据库报错就定位到上面的utils.py文件,把sql语句print出来。print出来如下语句

   SELECT table_name, 't'
            FROM user_tables
            WHERE
                NOT EXISTS (
                    SELECT 1
                    FROM user_mviews
                    WHERE user_mviews.mview_name = user_tables.table_name
                )
            UNION ALL
            SELECT view_name, 'v' FROM user_views
            UNION ALL
            SELECT mview_name, 'v' FROM user_mviews

去看一下语句的表user_tables,user_views,user_mviews,其中user_table有个login_register_product,可能就是这个表中的这条数据exist了,我就想删除表中的这一行,然后直接删和进system删都遇到问题,sysdba赋了权限也一样

ORA-02030: 只能从固定的表/视图查询
sqlplus/nolog

conn/as sysdba

grant delete on user_tables to c##scott;

delete from user_tables where table_name=LOGIN_REGISTER_PRODUCT;

drop table LOGIN_REGISTER_PRODUCT;

问了一下同事说这是系统表,不能修改,它存在这个条目是因为数据库中存在login_register_product命名的表,drop掉login_register_product再运行python manage migrate就可以。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值