【问题标题】:Liquibase generateChangeLog is failing - with Table already existsLiquibase generateChangeLog 失败 - 表已经存在
【发布时间】:2014-08-29 07:00:15
【问题描述】:

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

此过程正在运行,但在移至新计算机后无法运行。当它工作时,我看到 databasechangelog 中有几条记录以及 databasechangeloglock 中的 1 条记录

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

【问题讨论】:

  • 在文档中解释。您需要运行“changeLogSync”命令以指示变更集(特别是创建表的变更集)应标记为已应用。见:liquibase.org/documentation/existing_project.html
  • 好的,我看到这是一个记录在案的步骤。当我运行 changeLogSync 时,它会使用看起来正确的行填充 databasechangelog 表。
  • 不幸的是 liquibase 仍然抛出“表已存在”错误。所以我输入了 来停止错误。我删除了 并且错误不再出现。此外,我的其他 Jhipster 项目没有运行 changeLogSync,它们运行良好。 (我恢复到 liquibase 3.0 因为我想我看到 Jhipster 有这个硬编码为 xsd 版本)。会发生什么?

标签: liquibase jhipster


【解决方案1】:

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

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

【讨论】:

  • 是的,liquibase 使用 id+author+filename,因此您不必担心 id+author 跨多个文件的唯一性。要强制使用文件名,可以使用logicalFilePath 属性。
猜你喜欢
  • 2013-09-10
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
相关资源
最近更新 更多