欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/3/20 编程问答 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 07 ORA系列:ORA-01747 或列说明无效 user.table.column, table.column 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

如果希望对常见的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) primary key,

pname varchar2(100),

"date" date

);

 

4.在框架中可能情况

在框架中配置引发的问题。

4.1 hibernate里面配置level字段后,则会报列名无效,

如果一定要用这个,则需要用‘’括起来,就解决问题。

 

错误的方式:

Xml代码 

  • <property name="level" type="java.lang.Integer"> 
  •              <column name="level" precision="1" scale="0" /> 
  •        </property> 
  •    </class> 
  •  

    正确的方式:

    Xml代码 

  • <property name="level" type="java.lang.Integer"> 
  •              <column name='"level"' precision="1" scale="0" /> 
  • </property>    
  •   

    4.2 Mybatis中插入数据时,多了个逗号

     

    insert into yw_cb_grjbzl (xm,xb,csny,mz,) values ('张三','女','汉族',);

     

     

     

     

     

     

     

     

    总结

    以上是生活随笔为你收集整理的07 ORA系列:ORA-01747 或列说明无效 user.table.column, table.column的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。