【问题标题】:Does spring.jpa.hibernate.ddl-auto=validate make changes in DB schema?spring.jpa.hibernate.ddl-auto=validate 是否会更改数据库模式?
【发布时间】:2017-10-13 09:19:22
【问题描述】:

在生产环境中,我使用的是 spring.jpa.hibernate.ddl-auto=validate 但我发现新列会自动添加到我的生产数据库中。

我已经使用虚拟应用程序完成了一个小型 POC,它没有在我的本地系统上添加列。

谁能帮我了解spring.jpa.hibernate.ddl-auto=validate 属性可能存在的问题。

感谢任何帮助。

PFA 我访问了文档,但没有获得足够的详细信息:

文档网址: enter link description here

【问题讨论】:

  • 如果任何名为“验证”的东西发生了变化,那么你应该报告它,因为这就是“更新”的目的。
  • 您提到了一个用于传递到 Hibernate 的弹簧配置,但您没有提及哪些列或提供任何您看到的更改的示例?您看到添加的列与某些与 Hibernate 无关的 spring-data-jpa 特定实现无关。更多详细信息将对 imo 有所帮助。

标签: hibernate jpa spring-boot spring-data


【解决方案1】:

是的,在生产环境中,spring.jpa.hibernate.ddl-auto=update 是从外部 .properties 文件传递​​的。

现在我很确定 spring.jpa.hibernate.ddl-auto=validate 永远不会更新数据库架构。

谢谢大家。

【讨论】:

    【解决方案2】:

    validate 不应更改您的数据库架构。

    如果是这样,您应该提出问题,尽管我怀疑这是否真的发生了。

    我认为更有可能

    • 您有多种配置,其中一种配置与您正在查看的配置不同。
    • 完全不同的是您的数据库架构。

    为了调试这种情况,请执行以下操作:

    1. 确保您可以重现架构更改行为,例如通过添加和删除实体。
    2. 逐步从项目中删除所有对于重现行为而言不必要的内容。这应该会给您留下一个很小的项目:一个构建文件、一个实体、一个代表您的应用程序以启动所有内容的类,可能还有一个或两个配置文件。

    如果您确实成功执行了第 2 步,同时仍然重现架构更改行为,请更新您的问题或直接提交错误。

    如果(我目前所期望的)在第 2 步中的某个时间点,奇怪的行为消失了,您就找到了罪魁祸首。

    如果不是很明显:您希望使用版本控制来完成所有这些操作,以便您可以撤消/重做/查看步骤。

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 2020-06-21
      • 2019-05-02
      • 2018-04-11
      • 2022-08-11
      • 2017-05-05
      • 2015-12-15
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多