简体   繁体   English

Spring 引导 PostgreSQL 列不存在错误 Docker

[英]Spring Boot PostgreSQL column does not exist error with Docker

I am using Spring Boot with PostgreSQL. I want to save my Entity objects in the database but when I try to do so, an error message appears:我正在使用 Spring Boot with PostgreSQL。我想将我的实体对象保存在数据库中,但是当我尝试这样做时,会出现一条错误消息:

spring    | 2021-10-11 08:08:59.634  WARN 1 --- [      Thread-40] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42703
spring    | 2021-10-11 08:08:59.634 ERROR 1 --- [      Thread-40] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: column "differencetolexifipricescore" of relation "rtdatabase" does not exist

I was using Spring with H2 and everything was working fine.我将 Spring 与 H2 一起使用,一切正常。 I then migrated to Docker + PostgreSQL.然后我迁移到 Docker + PostgreSQL。

My Entity code:我的实体代码:

@Data
@Entity
@Table(name="RTDatabase")
public class MarketPrice {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    long ID;
    @Column(name="RIC")
    String RIC;
    @Column(name="name")
    String name;
    @Column(name = "bid_issuer")
    Float bid_issuer;
    @Column(name = "ask_issuer")
    Float ask_issuer;
    @Column(name = "ask_kech")
    Float ask_kech;
    @Column(name = "bid_kech")
    Float bid_kech;
    @Column(name = "isin")
    String ISIN;
    @Column(name = "decenter")
    Float decenter;
    @Column(name = "kech_margin")
    Float kech_margin;
    @Column(name = "kech_spread")
    Float kech_spread;
    @Column(name = "issuer_spread")
    Float issuer_spread;
    @Column(name = "denomination")
    Float denomination;
    @Column(name = "bid_only")
    boolean bid_only;
    @Column(name = "publishing")
    String publishing;
    @Column(name = "price_expression")
    String price_expression;
    @Column(name = "NAV")
    Float NAV;
    @Column(name = "average_score")
    Float average_score;
    @Column(name = "force_publish")
    boolean force_publish;
    @Column(name = "CUSIP")
    String CUSIP;
    @Column(name = "published")
    boolean published;
    @Column(name = "product_type")
    String product_type;
    @Column(name = "creator")
    String creator = "RTV";
    @Column(name = "timestamp")
    String timestamp;
    @Column(name ="RTV")
    boolean RTV=true;
    @Column(name="currency")
    String currency;
    @Column(name = "distanceToBandsScore")
    Float distanceToBandsScore;
    @Column(name = "differenceToLexiFiPriceScore")
    Float differenceToLexiFiPriceScore;
    @Column(name = "metricC")
    Float metricC;
    @Column(name="volatility")
    Float volatility;

My Postgres configuration file:我的 Postgres 配置文件:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

        <!-- JDBC Database paramètres de connection -->
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url">jdbc:postgresql://db:5432/compose-postgres</property>
        <property name="connection.username">compose-postgres</property>
        <property name="connection.password">compose-postgres</property>

        <!-- JDBC connection pool paramètres de connection -->
        <property name="connection.pool_size">5</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.PostgreSQL95Dialect</property>
        <property name="spring.jpa.hibernate.ddl-auto">update</property>
        <property name="spring.jpa.hibernate.naming.implicit-strategy">org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl</property>
        <!-- Echo le SQL sur stdout -->
        <property name="show_sql">false</property>
        <property name="format_sql">false</property>
        <property name="use_sql_comments">false</property>

        <!-- Contexte de la session actuelle -->
        <property name="current_session_context_class">thread</property>

        <!-- Configuration dbcp connection pool -->
        <property name="hibernate.dbcp.initialSize">5</property>
        <property name="hibernate.dbcp.maxTotal">20</property>
        <property name="hibernate.dbcp.maxIdle">10</property>
        <property name="hibernate.dbcp.minIdle">5</property>
        <property name="hibernate.dbcp.maxWaitMillis">100</property>
        <mapping class="com.kepler.solutions.valuation.model.MarketPrice" />
    </session-factory>
</hibernate-configuration>

I am also adding configuration parameters in my docker-compose.yml我还在我的 docker-compose.yml 中添加了配置参数

version: '2'

services:
  spring:
    image: 'realtime:latest'
    container_name: spring
    depends_on:
      - db
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/compose-postgres
      - SPRING_DATASOURCE_USERNAME=********
      - SPRING_DATASOURCE_PASSWORD=*********
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update
    volumes:
      - /home/vagrant/valorisation-2.0:/app
    command: ["java", "-jar", "rtv-1.jar"] 
    mem_limit: 10g
    mem_reservation: 10g
  db:
    image: 'postgres:13.1-alpine'
    container_name: db
    environment:
      - POSTGRES_USER=*****
      - POSTGRES_PASSWORD=*****

Any help on that error?对那个错误有帮助吗? Many thanks in advance!提前谢谢了!

It worked by renaming the column to difference_to_lexifi_price_score !它通过将列重命名为 difference_to_lexifi_price_score 来工作! Thanks !谢谢 !

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM