Liquibase generateChangeLog失败 - 表已经存在

问题描述 投票:1回答:1

当我运行Jhipster项目时,我从Liquibase得到一个“表已存在”错误:

[ERROR] liquibase - classpath:config/liquibase/master.xml: classpath:config/liquibase/changelog/db-changelog-001.xml::1::jhipster: Change Set classpath:config/liquibase/changelog/db-changelog-001.xml::1::jhipster failed.  Error: Error executing SQL CREATE TABLE fc.T_USER (login VARCHAR(50) NOT NULL, .....: Table 't_user' already exists

我使用了生成Liquibase changelog文件到config \ liquibase \ changelog目录

liquibase --driver=com.mysql.jdbc.Driver ^
      --classpath=C:\Users\Greg\.IntelliJIdea13\config\jdbc-drivers\mysql-connector-java-5.1.31-bin.jar ^
      --changeLogFile=db-changelog-001.xml ^
      --url="jdbc:mysql://localhost/fc" ^
      --username=root ^
      generateChangeLog

因此,当我认为更改日志正在设置现有数据库的基线时,有些事情正在欺骗Liquibase尝试重新创建数据库。

  • Jhipster版本:当我哟jhipster -v是1.2。当我更新jhipster时,我说是最新的= 17.2
  • Liquibase版本尝试了3.0,3.1和3.2
  • 来自XAMPP的Mysql数据库
  • 在Mysql中创建了2个表 - databasechangelog和databasechangeloglock
  • databasechangelog保持为空,并且在运行Jhipster应用程序时,databasechangeloglock会添加一条记录

此过程正在运行,但自从迁移到新计算机后就没有了。当它工作时,我看到databasechangelog中有几条记录,而databasechangeloglock中有一条记录

关于如何调试欢迎作为答案的提示。谢谢。

liquibase jhipster
1个回答
1
投票

如上所述运行generateChangeLog,然后在原地运行changeLogSync,导致databasechangelog表中的字段[FILENAME]具有值db-changelog-001.xml

它需要的是liquibase运行的完整地址。在Jhipster应用程序中,我看到classpath:config/liquibase/changelog/db-changelog-001.xml。所以它似乎并没有像我期望的那样只使用ID作为行标识符。

© www.soinside.com 2019 - 2024. All rights reserved.