Mysql 表被截断为“0”;spring.jpa.hibernate.ddl auto“;证实

Mysql 表被截断为“0”;spring.jpa.hibernate.ddl auto“;证实,mysql,spring-boot,spring-data-jpa,Mysql,Spring Boot,Spring Data Jpa,注意:Spring Boot 2.1.10+Spring Cloud Greenwich.SR3 我有两个Spring Data JPA服务访问同一个外部数据库(MySQL),并共享一个公共域: @Entity @Data public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "first_name") @N

注意:Spring Boot 2.1.10+Spring Cloud Greenwich.SR3

我有两个Spring Data JPA服务访问同一个外部数据库(MySQL),并共享一个公共域:

@Entity
@Data
public class Person {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "first_name") @NotNull
    private String firstname;
    private LocalDate birth;
    private Integer votes = 0;
}
在第一个服务(producer)中,我为示例插入添加了data.sql:

insert into person(first_name) values ('foobar');
insert into person(first_name) values ('scoubidou');
以及以下特性:

spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=validate
spring.datasource.initialization-mode=never
在第二个服务(消费者)中,我只想使用模式,而不在启动时修改它,因此我使用了以下属性:

spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=validate
spring.datasource.initialization-mode=never
启动producer时,将创建DB模式并用示例实体填充。 但是当我启动消费者时,entities表被截断。
请问,有人知道桌子是如何清空的,以及如何避免吗?

请不要在您的生产商服务上使用
create drop
。阅读

  • 无:MySQL的默认值。未对数据库结构进行任何更改

  • 更新:Hibernate根据给定的实体结构更改数据库

  • 创建:每次创建数据库,但不会在关闭时将其删除
  • 创建删除:创建数据库并在SessionFactory关闭时删除它
尝试仅使用
create

spring.jpa.hibernate.ddl-auto=create

该物业最终解决了问题:

spring.jpa.properties.hibernate.hbm2ddl.auto=validate

可能与spring.jpa.hibernate.ddl auto?

thx存在连接误导,但这只能防止在生产者停止后删除db模式;我不会在那个用例上停止它