Java Liquibase始终生成用于创建/删除索引的变更集

Java Liquibase始终生成用于创建/删除索引的变更集,java,database,maven,indexing,liquibase,Java,Database,Maven,Indexing,Liquibase,我刚刚开始使用Liquibase,我想知道:为什么当我运行/mvnw compile Liquibase:diff时,会生成更改集,首先删除现有索引,然后重新创建它们(如果它们已经存在) 例: 可能是因为“懒惰” 这是一种确保创建的索引与引用数据库中的索引相同(不仅是名称,而且是使用的列)的简单方法 它一次处理两种不同的情况: 目标数据库中缺少索引名称 相同的索引名称,但定义不同 太好了,谢谢您的解释。如果你有时间-另一个问题:我应该多久生成一次新的变更日志?每次数据库更新时?或者我可以只附

我刚刚开始使用Liquibase,我想知道:为什么当我运行
/mvnw compile Liquibase:diff
时,会生成更改集,首先删除现有索引,然后重新创建它们(如果它们已经存在)

例:


可能是因为“懒惰”

这是一种确保创建的索引与引用数据库中的索引相同(不仅是名称,而且是使用的列)的简单方法

它一次处理两种不同的情况:

  • 目标数据库中缺少索引名称
  • 相同的索引名称,但定义不同

太好了,谢谢您的解释。如果你有时间-另一个问题:我应该多久生成一次新的变更日志?每次数据库更新时?或者我可以只附加一些小的更改,比如在现有的变更日志中添加一个新的序列或列吗?这有关系吗?谢谢就个人而言,我会在每次发布时生成差异。它们被打包为二进制文件中的可交付内容。我发现开发过程中的diffing没有那么有用,因为liquibase可以直接在devdb上构建和更新您的模式。
 <changeSet author="me (generated)" id="1486157347995-13">
      <dropIndex indexName="my_idx" tableName="notification"/>
      <createIndex indexName="my_idx" tableName="notification">
         <column name="index_col"/>
      </createIndex>
</changeSet>