07 ORA系列:ORA-01747 或列说明无效 user.table.column, table.column

当Oracle表中字段名与数据库关键字冲突时会出现ORA-01747错误。例如字段名role、date与数据库关键词ROLE、DATE冲突。避免使用关键字作为字段名或在创建时使用双引号并区分大小写。在框架如Hibernate、Mybatis中配置字段时,需要注意特殊字符和引用方式,避免引发此类问题。
摘要由CSDN通过智能技术生成

如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看《ORACLE系列异常总结ORA》。

 

1.通常错误原因

表中字段名称与数据库中关键名称冲突了。

比如:

表中字段名称为role,date, level等来表示角色,日期,级别

这与数据库中的关键词ROLE,DATE冲突了。

 

2.查询表中字段名称是否与数据库关键次冲突SQL

select * from v$reserved_words

 where keyword in (           

   select COLUMN_NAME from all_tab_columns

    where table_name = '表名大写' and owner = '用户名大写');

 

3.解决方案

3.1 避免使用ORACLE的关键字作为表字段名。(推荐)

3.2 建表时,把字段名加上双引号,并且严格区分大小写。因为Oracle默认是不区分大小写的,但若是字符串,并使用了双引号,此时会区分大小写。默认情况date不能作为字段名称,但使用双引号后就可以创建表了。如下所示:

create table test_person(

pid varchar2(44) pr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值