spring.jpa.hibernate.ddl-auto = validate是否在数据库模式中进行更改?

时间:2017-05-14 14:33:06

标签: hibernate jpa spring-boot spring-data

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

我做了一个带有虚拟应用程序的小POC,它没有在我的本地系统上添加一列。

任何人都可以帮助我了解spring.jpa.hibernate.ddl-auto=validate属性可能存在的问题。

感谢任何帮助。

PFA我访问了文档,但没有得到足够的详细信息: enter image description here

文档网址: enter link description here

2 个答案:

答案 0 :(得分:1)

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

如果确实如此,你应该提出一个问题,尽管我怀疑这是真的发生了什么。

我认为更有可能

  • 你有多个配置和一个不同的配置,然后你正在看的那个配置被拿起来。
  • 完全不同的是您的数据库架构。

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

  1. 确保您可以重现架构更改行为,例如通过添加和删除实体。
  2. 逐步删除项目中不需要再现行为的所有内容。这应该给你一个小项目:一个构建文件,一个实体,一个代表你的应用程序启动一切的类,可能是一个或两个配置文件。
  3. 如果您在继续复制架构更改行为的同时实际上已成功完成第2步,请更新您的问题或直接提交错误。

    如果(我现在期待的话)在第2步中的某个时刻,奇怪的行为就会消失,你找到了你的咒语。

    如果不明显:您希望使用版本控制执行所有操作,以便撤消/重做/审核步骤。

答案 1 :(得分:1)

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

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

谢谢大家。