我得到一张"表已经存在"我运行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尝试重新创建数据库。
此过程正常,但自从转移到新计算机后就没有了。当它工作时,我看到databasechangelog中有几条记录,而databasechangeloglock中有1条
有关如何调试欢迎作为答案的提示。感谢。
答案 0 :(得分:1)
如上所述运行generateChangeLog
,然后changeLogSync
原地运行,会导致databasechangelog表中的字段[FILENAME]
具有值db-changelog-001.xml
。
它需要的是liquibase运行的完整地址。在Jhipster应用程序中,我看到classpath:config/liquibase/changelog/db-changelog-001.xml
。所以它似乎没有像我期望的那样只使用ID作为行标识符。