2016-09-07 78 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)