2016-09-07 79 views
0

我已经创建了一个非常简单的Jhipster应用程序,并将其部署到Heroku。一切工作正常,所以我添加了一个新的领域,我非常简单的对象和重新部署。我得到了以下错误:jhipster liquibase diff heroku

2016-09-07T12:32:49.375947+00:00 heroku[router]: at=info method=POST path="/api/tsts?cacheBuster=1473251569324" host=deplyjhip.herokuapp.com request_id=2b7190f7-0301-456d-87a9-7342640aad9d fwd="5.2.192.47" dyno=web.1 connect=0ms service=17ms status=500 bytes=532 
2016-09-07T12:32:49.361875+00:00 app[web.1]: 2016-09-07 12:32:49.361 ERROR 3 --- [io-40257-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: column "amend" of relation "tst" does not exist 
2016-09-07T12:32:49.361530+00:00 app[web.1]: 2016-09-07 12:32:49.361 WARN 3 --- [io-40257-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42703 

我知道会发生什么。当我重新部署使用:

./gradlew -Pprod bootRepackage -x test 
heroku deploy:jar --jar build/libs/*war 

它没有运行./gradlew liquibaseDiff

如何运行liquibase DIFF和运用Heroku的DB的变化?

回答

2

这似乎并没有完全迁移你的新领域。它看起来像刚刚添加到域包中的实体类的属性,但没有任何liquibase迁移。你有两个选项来实现这一目标:

  1. 手动迁移

刚刚创建的src /主/资源/配置/ liquibase /更新日志目录下的 “YYYYMMDDHHmmss_add_field_to_my_entity.xml” 与内容一样

<?xml version="1.0" encoding="utf-8"?> 
<databaseChangeLog 
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd"> 

    <changeSet id="YYYYMMDDHHmmss" author="you"> 
     <addColumn tableName="your_table"> 
      <column name="column_name" type="??" /> 
     </addColumn>   
    </changeSet> 
</databaseChangeLog> 

使您的更改发生。 不要编辑一些changelog文件,已经迁移过去了!

  • 添加字段,你的数据库,并thenn liquibase:diff 在这里你可以使用你知道的工具,以便通过添加该列编辑您的数据库。 SQL,然后运行要么./mvnw liquibase:diff./gradlew liquibaseDiffChangelog产生
  • +0

    我知道这是发生了,我现在要解决这个地方,但我不知道如何做到这一点对Heroku数据库 – user1995187

    +0

    如果你的迁移失败只有另一个迁移将修复...在最坏的情况下,你将不得不擦除你的数据库或手动连接来解决这个问题 –

    0

    为了运行./gradlew liquibaseDiff我在设置的gradle/liquibase.gradle数据库连接详情如下迁移:

    args "--username=USERNAME" 
    args "--password=PASSSWORD" 
    args "--url=jdbc:postgresql://ec2-BLA.bla.eu-west-1.compute.amazonaws.com:5432/DATABASENAME?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory" 
    

    它不工作无:ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

    这产生的更新日志,所以我说它master.xml并重新部署应用程序(也就是从戴维·施泰曼的回答步骤2)