此问题的原因是因为表的列名称使用了Oracle声明的关键字,列名起的不好引起的。

如果列很多,又不好确定是哪个列名使用了关键字,以下建议可供参考:

select * from v$reserved_words where keyword
in(
select COLUMN_NAME
from all_tab_columns
where table_name = 'HP_FFS' and owner='用户名大写'
);

  除了与oracle关键字段冲突错误外(select * from v$reserved_words;--查询oracle数据库关键字),还有一种可能是po映射时的字段是否与数据库中的字段匹配,包括检查有外键关联所关联的PO中的各个字段映射是否正确。

  此外,也有可能是SQL语句查询插入的列名的最后多了一个“,”逗号等原因,也会引起这种错误。

一些具体的解决方案建议:

情形1

1.创建表是不使用ORACLE的关键字作为表字段名。

2.oracle 表字段关键字的查询 : 把字段名加上双引号,并且严格区分大小写。

建议采用第一种方法解决,减少出现其他问题的几率。

情形2

1、首先我们要确认哪些字符串是Oracle的关键字,具体可通过Oracle提供的V$RESERVED_WORDS

2、对历史遗留系统的处理

  • 考虑修改表的列名,风险较大
  • 修改特定查询语句

3、验证

通过验证得出结论:

  • 在查询列中使用双引号
  • 要注意列的大小写
CREATE TABLE WYC_TEST(CODE VARCHAR2(20), ADDR VARCHAR2(40));

INSERT INTO WYC_TEST(CODE,ADDR) VALUES('00', 'ADDR00');
ALTER TABLE WYC_TEST ADD "ROW" VARCHAR2(20);
ALTER TABLE WYC_TEST ADD "Row" VARCHAR2(20);
ALTER TABLE WYC_TEST ADD "RoW" VARCHAR2(30);
INSERT INTO WYC_TEST(CODE,ADDR, "ROW") VALUES('00', 'ADDR00', 'abc');
UPDATE WYC_TEST SET "ROW" = WYC_TEST.ADDR || '_ROW', "Row"=WYC_TEST.ADDR || '_Row', "RoW"=WYC_TEST.ADDR || '_RoW' SELECT * FROM WYC_TEST;

参考文章:

1. 关于报错“ORA-01747: user.table.column, table.column 或列说明无效”的解决办法

2. ORA_01747:User.table.column 或列说明无效

3. ORA-01747: user.table.column, table.column 或列说明无效n, table.column 或列

“ORA-01747: user.table.column, table.column 或列说明无效” 的解决方案的更多相关文章

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

    Oracle.DataAccess.Client.OracleException ORA-01747: user.table.column, table.column 或列说明无效 原因1: 查了一下 ...

  2. user.table.column, table.column 或列说明无效

    Oracle统计采用别名出错(user.table.column, table.column 或列说明无效) >>>>>>>>>>>& ...

  3. dashDB - Creating a table with CLOB column type

    In order to create a table with clob column type, the table has to be created with "ORGANIZE BY ...

  4. SQLAlchemy Table(表)类方式 - Table类和Column类

    Table 构造方法 Table(name, metadata[, *column_list][, **kwargs]) 参数说明: name 表名 metadata 元数据对象 column_lis ...

  5. 关于“ORA-01747: user.table.column, table.column 或列说明无效”的报错。

    今天在工程中遇到“ORA-01747: user.table.column, table.column 或列说明无效”的报错情况,查了一下是由于数据库列名起的不好引起的,名字用到了数据库的关键字.

  6. SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑

    习惯使用jpa操作对象的方式,现在用mybatis有点不习惯. 其实是懒得写SQL,增删改查那么简单的事情你帮我做了呗,mybatis:NO. 没办法,自己搞喽! 这里主要是实现了通过代码自动生成my ...

  7. [转]jQuery: get table column/row index remove table column (by column number)

    本文转自:http://www.xinotes.org/notes/note/1087/ <!DOCTYPE html><html><head> <title ...

  8. 修改TABLE中的Column的属性

    删除主键名 这个主键名并不是列名,而是主键约束的名字,如果当时设置主键约束时没有制定约束的名字 设置主键的语句:ALTER TABLE P add constraint pk PRIMARY KEY ...

  9. sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) Cannot add a NOT NULL column with default value NULL [SQL: u'ALTER TABLE address_scopes ADD COLUMN ip_version INTEGER NOT NULL']

    root@hett-virtual-machine:~# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neu ...

随机推荐

  1. MySQL 查询优化之 Index Condition Pushdown

    MySQL 查询优化之 Index Condition Pushdown Index Condition Pushdown限制条件 Index Condition Pushdown工作原理 ICP的开 ...

  2. 无法连接Elasticsearch解决方案

    前言 最近还是在弄ELK,并且在测试Logstash从kafka消费日志(最后输出到Elasticsearch). 测试完毕后,在kibana中,并没有发现Elasticsearch中的数据. 后来装 ...

  3. iptables IP流量统计

    最后是使用ipset进行流量统计,iptaccount资料太少而且还跟网上说明的操作情况不相符,继续看源码分析组长老大都不高兴.ipset使用帮助 1. 创建ipset集合:ipset create ...

  4. MySQL 之Navicat Premium 12安装使用、pymysql模块使用、sql注入问题的产生与解决

    本文内容提要: Navicat Premium 12 的介绍.使用. pymysql模块的使用 sql注入问题的产生与解决 -------------------------------------- ...

  5. R语言基础-list matrix array

    列表可以包含多种类型,如数字/字符/向量/data.frame/list # 创建含一个向量元素的list list1 = list(c(1,2,3)) # list2有三个元素 list2 = li ...

  6. 1 producer — n consumers 模型 实现

    #include<stdio.h> #include<string.h> #include<pthread.h> #include<stdlib.h> ...

  7. 数据库---大数据+hadoop

    大数据:hadoop:大数据和hadoop的关系

  8. 00030_ArrayList集合

    1.数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变 2.JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合 ...

  9. unittest断言方法的使用

    unittest框架的TestCase类提供以下方法用于测试结果的判断 方法 检查 版本 assertEqual(a, b) a ==b   assertNotEqual(a, b) a !=b   ...

  10. Java程序员---技能树

    计算机基础: 比如网络相关的知识. 其中就包含了 TCP 协议,它和 UDP 的差异.需要理解 TCP 三次握手的含义,拆.粘包等问题. 当然上层最常见的 HTTP 也需要了解,甚至是熟悉. 这块推荐 ...