当前位置:Gxlcms > mysql > oracle中bug之ORA-00904:”COS

oracle中bug之ORA-00904:”COS

时间:2021-07-01 10:21:17 帮助过:61人阅读

笔者今天遇到一个oracle中的bug,详情请看小生细细道来。 换列名后,标示符还是无效 ORA-00904:”COS_0”: 标示符无效 如题,也许导致这个问题的原因很多,但是本文笔者所要描述的是由于创建表对象时,创建的语句里列名带有双引号问题。“”就是这个符号的原

笔者今天遇到一个oracle中的bug,详情请看小生细细道来。

换列名后,标示符还是无效ORA-00904:”COS_0”:标示符无效

如题,也许导致这个问题的原因很多,但是本文笔者所要描述的是由于创建表对象时,创建的语句里列名带有双引号问题。“”就是这个符号的原因。如下所示:

create table D_METER_SITECHK (

READ_ID NUMBER(16) not null,

METER_ID NUMBER(16) not null,

TEST_DEPT_NO VARCHAR2(16),

"Ua" NUMBER(12,4),

"Ub" NUMBER(12,4),

"Uc" NUMBER(12,4),

"la" NUMBER(12,4),

constraint PK_D_METER_SITECHK primary key (READ_ID)

);

以上语句里的双引号是怎么来的,一是通过建模工具,自动生成的时候,建模工具会默认把一些字段当成关键字,会莫名其妙给这些看似关键字的列名加上双引号‘“’。但是再PL/SQL创建表的时候,PL/SQL却不报错,而且创建出来的表几乎看不出任何问题。

可是当你对这个表做插入数据时却始终插不进去,无论你换任何列名,都无济于事。但是你执行select操作却能正常把数据查出来。很奇怪吧。

不管你换任何列名,只要你不把以上带双引号的四个列删掉,就会一直出错,但是你会发现,无论你怎么删除或者更改上述四个带双引号的列的列名,始终改不了。系统总是提示:ORA-00904:”COS_0” :标示符无效

解决这个问题的唯一办法就是,删掉这个表,当然如果这个表里的列是别的表的主键,那么其他的表也要受到关联。

重新创建表对象,从建模工具里复制自动生成的sql创建语句到记事本里,然后把双引号去掉。

完事,此问题得到解决。

大概这是oraclebug吧。

带双引号的列,能创建成功,但是无法对这个表对象做任何操作。

人气教程排行