ora-30667无法删除对null列的默认值的非null约束



首先,我感谢您的帮助,并对我的英语感到抱歉。

我是一名学生,我的老师为我创建了一个模式,这样我就可以使用Oracle数据库了。它运行得很好,但今天我删除了一些表并添加了其他表,当我试图在新表中插入一些内容时,它给了我一个错误:

ora-30667无法删除空列上默认值的非空约束

我读到一些关于这个错误的东西,还有一些说要清理回收站,但它对我不起作用;它仍然给我那个错误。

即使是一个简单的例子也给了我错误:

create table example(example_id number(10), example_name varchar(255));
insert into example(example_id, example_name) values(1, 'example');

请帮帮我,我必须做这项工作,但那个错误不让我做。

Oracle版本:Oracle Database 12c Enterprise Edition Release 12.1.0.1.0-64位生产版

版本:

我试过这个,作为一个完整的例子:

create table tipo_funcionario(
id_tipo_funcionario number(10),
descricao varchar(255)
);
insert into tipo_funcionario(id_tipo_funcionario, descricao) values(1, 'gestor');

我执行,上面写着:

insert into tipo_funcionario(id_tipo_funcionario, descricao) values(1, 'gestor')
Error report - 
SQL Error: ORA-00604: error occurred at recursive sql level 1

ORA-30667: cannot drop not null constraint on a default on null column
00604. 00000 -  "error occurred at recursive SQL level %s"
*Cause:    An error occurred while processing a recursive SQL statement
           (a statement applying to internal dictionary tables).
*Action:   If the situation described in the next error on the stack
           can be corrected, do so; otherwise contact Oracle Support.

我花了一天的大部分时间试图克服这个错误。它会随机消失,让我运行查询,但随后它会无缘无故地再次运行。

"第1行出现错误:ORA-00604:递归SQL级别1发生错误ORA-30667:无法删除DEFAULT on NULL列""上的NOT NULL约束

显然,这是Oracle 12.1的一个错误。

我终于找到了修复方法,即在sqlplus:purge recyclebin;中运行此命令

我花了这么长时间进行故障排除,因为我认为这是sql的问题。

我不知道它是否仍然相关,但如果相关:如果您可以使用简单的命令行工具(如SQL Plus)重试插入,例如,我相信您不会收到那个错误。看起来您使用的GUI工具有一个"自由SQL"区域,并且在执行之前没有标记插入命令的特定文本,也没有使用半列或任何其他编辑器分隔符来分隔不同的命令。

您可以清除回收站以暂时解决此问题。

我正在寻找甲骨文支持的确切错误。

相关内容

  • 没有找到相关文章

最新更新