【问题标题】:How does production database creation work in Jhipster?在 Jhipster 中如何创建生产数据库?
【发布时间】:2017-01-27 17:54:31
【问题描述】:

在将我的 jhipster 生成的应用程序上传到 heroku 时遇到一些问题,经过一些研究后,我发现我在开发时所做的一些实体修改并未在生产数据库中完成,因此缺少一些字段。

我还向用户实体添加了一个字段,所以现在我什至无法注册/登录,而该字段从表中丢失。

想知道数据库生成在 prod 模式下的工作原理,以便我可以让它工作。这可能与 liquibase 更改日志中缺少的 smth 有关吗?(我对 liquibase 完全陌生,所以我有点迷茫)。

更新:

问题似乎是“jhi_user”表中缺少一列。我需要创建一个数据库更改日志来添加缺少的列,所以我跑了 "mvn liquibase:generateChangeLog"

我看到控制台中弹出了正确的更改日志,但在我的更改日志文件夹下没有创建任何更改日志。我做错了什么?

【问题讨论】:

  • 在运行jhipster:heroku后,您是否再次运行mvn install -Pprodheroku deploy:jar target/*.war
  • 是的,还尝试将 jhi_user 表的缺失字段添加到 initial_schema.xml 但它仍然从生产中丢失,我不确定这是否是添加额外列的合适位置。跨度>

标签: java spring heroku liquibase jhipster


【解决方案1】:

问题是当我从 yo jhipster:entity 命令创建实体时,没有生成更改日志。

解决了这个问题:

mvn liquibase:diff

加上一些手工完成的变更集并将它们添加到 master.xml。

之后:

mvn liquibase:dropAll
mvn liquibase:update

然后部署到heroku并创建每个表。

【讨论】:

    【解决方案2】:

    首先,检查目录下是否存在与你的实体对应的迁移文件:

    src/main/resources/config/liquibase/changelog/
    

    然后通过运行确认 Heroku 应用有数据库:

    heroku addons
    

    然后运行 ​​Maven 重新打包你的 WAR 文件:

    mvn install -Pprod -DskipTests
    

    然后再次部署:

    heroku deploy:jar target/*.war
    

    JHipster 将在启动时运行迁移。如果您使用的是 Postgresql,您可以通过运行 heroku pg:psql 并使用类似 \d 的命令来检查表

    【讨论】:

    • 首先非常感谢。这个问题似乎与用户实体直接相关,因为我在生成器之外对实体进行了一些更改,所以我在开发中手动添加到数据库的新字段不在更改日志中。我试图添加它但没有成功(问题已编辑)
    • 您是否编辑了现有的变更日志?您需要创建一个新的,因为它已经运行了。
    • 太好了,所以我需要创建一个类似的更新日志(评论已更新)
    • "mvn liquibase:generateChangeLog" 不像你想的那样工作,请阅读Liquibase doc。同样在JHipster doc 中,我们提供了一些关于如何发展实体并与 Liquibase 同步的提示。
    • 我一直在环顾四周,找不到解决方案,已完成 mvnw liquibase:diff 以检查更改,将更改日志添加到 master.xml,甚至创建了我自己的更改日志以添加我的用户实体所在的列在生产中丢失,但仍然做错了。
    猜你喜欢
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多