Spring boot “oracle.jdbc.OracleDatabaseException: ORA-00904: invalid identifier” 创建表时出错

Posted

技术标签:

【中文标题】Spring boot “oracle.jdbc.OracleDatabaseException: ORA-00904: invalid identifier” 创建表时出错【英文标题】:Spring boot "oracle.jdbc.OracleDatabaseException: ORA-00904: invalid identifier" Error while creating table 【发布时间】:2021-06-28 11:01:17 【问题描述】:

在 Spring Boot 中,我使用 Code-First 方法创建数据库表。 然后在运行应用程序时,其中一个表的结果显示此错误:

WARN  o.h.t.s.i.ExceptionHandlerLoggedImpl.handleException - GenerationTarget encountered exception accepting command : Error executing DDL "alter table statistic add date timestamp" via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceExcepti
on: Error executing DDL "alter table statistic add date timestamp" via JDBC Statement]

oracle.jdbc.OracleDatabaseException: ORA-00904: : invalid identifier

类实体如下:

@Entity
@Table(name = "statistic")
public class Statistic 

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String title;
    private Long value;
    private Date date;
    private String unit;


    public String getTitle() 
        return title;
    

    public void setTitle(String title) 
        this.title = title;
    

    public Long getValue() 
        return value;
    

    public void setValue(Long value) 
        this.value = value;
    

    public Date getDate() 
        return date;
    

    public void setDate(Date date) 
        this.date = date;
    

    public String getUnit() 
        return unit;
    

    public void setUnit(String unit) 
        this.unit = unit;
    

有谁知道问题出在哪里?

【问题讨论】:

为日期数据类型添加 @Temporal(TemporalType.TIMESTAMP)。喜欢@Temporal(TemporalType.TIMESTAMP) private Date date 这能回答你的问题吗? Java-Oracle - Unable to create specific table 【参考方案1】:

这是错误的:

alter table statistic add date timestamp
                          ----
                          this

date 是 Oracle 数据类型保留字。将列名更改为其他名称,例如datum, c_date, statistic_date, ... 然后运行

alter table statistic add datum timestamp

【讨论】:

非常感谢,对,是保留关键字错误,我改了字段名,问题解决了! 最受欢迎的reserved words是USERDATE

以上是关于Spring boot “oracle.jdbc.OracleDatabaseException: ORA-00904: invalid identifier” 创建表时出错的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 配置Oracle数据库

第一个spring-boot项目

Spring Boot 无法从数据源确定 jdbc url

Spring Boot,Spring Data JPA多数据源支持配置

Spring boot + oracle 驱动 + 没有合适的驱动

Spring-boot 数据源提交问题