当我运行我的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:UsersGreg.IntelliJIdea13configjdbc-driversmysql-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更新jhipster时,它说我是最新的= 17.2
- Liquibase版本尝试了3.0、3.1和3.2 Mysql数据库
- 在Mysql中创建2个表- databasechangelog和databasechangeloglock
- databasechangelog保持空,databasechangeloglock有一个记录添加当Jhipster应用程序运行
这个过程是有效的,但没有移动到新的计算机。当它工作时,我看到databasechangelog中有几条记录,以及databasechangeloglock中的1条
关于如何调试的提示,欢迎作为答案。谢谢。
按上述方法运行generateChangeLog
,然后原位运行changeLogSync
,结果databasechangelog表中字段[FILENAME]
的值为db-changelog-001.xml
。
它需要的是运行liquidbase的完整地址。当在一个Jhipster应用程序,我看到classpath:config/liquibase/changelog/db-changelog-001.xml
。因此,它似乎不使用仅ID作为行标识符,正如我所期望的。