在此之前,我感谢任何帮助,对我的英语感到抱歉。
我是学生,我的老师为我创建了一个架构,所以我可以使用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企业版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.
答案 0 :(得分:0)
我不知道它是否仍然相关 - 但如果是: 如果您可以使用简单的命令行工具(如SQL Plus)重试插入,例如我相信你不会得到那个错误。 看起来你使用的GUI工具有一个免费的SQL'区域,在执行之前不要标记插入命令的特定文本,也不要使用半列或任何其他编辑器分隔符分隔不同的命令。
答案 1 :(得分:0)
您可以清除回收站以临时解决此问题。
我正在从oracle支持中寻找确切的错误。
答案 2 :(得分:0)
我一整天都在尝试克服此错误。它会随机消失,让我运行查询,但随后它会无缘无故地再次开始执行该操作。
“第1行出现错误: ORA-00604:递归SQL级别1发生错误 ORA-30667:无法在DEFAULT ON NULL列上删除NOT NULL约束“
显然,这是Oracle 12.1的错误。
我终于找到了解决方法,该解决方法是在sqlplus中运行以下命令:purge recyclebin;
我花了很长时间进行故障排除,因为我认为这是sql的问题。