11
特定のテーブルから最大のカラム値を取得し、それを純粋なsqlなしの開始シーケンス値として設定できるかどうか疑問です。次のコードは動作しません:最大カラム値をliquibaseタグでシーケンス開始値として設定
<property name="maxId" value="(select max(id)+1 from some_table)" dbms="h2,mysql,postgres"/>
<changeSet author="author (generated)" id="1447943899053-1">
<createSequence sequenceName="id_seq" startValue="${maxId}" incrementBy="1"/>
</changeSet>
エラーを得た:
Caused by: liquibase.parser.core.ParsedNodeException: java.lang.NumberFormatException: For input string: "${m"
私は同じ結果となどselect ...
周りにいない括弧でそれを試してみました。 計算値を開始シーケンス値として使用することはできませんか?
をPostgresのために私は考えることができる唯一のことは、シーケンスを作成し、その後、SETVAL選択 '実行するために' 'タグ(「id_seq」を使用、(select max(id)+1 some_tableから)); '。 –
残りの設定ファイルを投稿できますか?どのような環境であなたはliquibaseを使用していますか? –
Norbert、Java8、Spring-boot 1.2.6、Liquibase 3.4.1、実行のためのPostgres(9.3-1102-jdbc41)、テストのためのH2。 – dfche