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 更改日志文件生成到 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。当我 nmp update jhipster 说我是最新的 = 17.2
  • Liquibase 版本尝试了 3.0、3.1 和 3.2
  • 来自 XAMP 的 Mysql 数据库
  • 在 Mysql 中创建了 2 个表 - databasechangelog 和 databasechangeloglock
  • 运行 Jhipster 应用程序时,databasechangelog 保持为空,并且 databasechangeloglock 添加了一条记录

此过程有效,但自从移至新计算机后就没有了。当它工作时,我看到 databasechangelog 中有几条记录以及 databasechangeloglock 中有 1 条记录

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

4

1 回答 1

2

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

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

于 2014-07-10T08:13:51.990 回答