web-dev-qa-db-ja.com

特定のファイルのみのliquibaseチェックサムをクリアできますか?

ランニング

liquibase --url=jdbc:Oracle:thin:@localhost:1521/XE --    
driver=Oracle.jdbc.OracleDriver --changeLogFile=db.changelog-next.xml --    
username=owner --password=xxxx --logLevel=info clearCheckSums

データベースからすべてのチェックサムをクリアします。 db.changelog-next.xmlのチェンジセットのチェックサムのみをクリアする方法はありますか?.

ありがとう

8
Lionel Orellana

これを行うclearCheckSumsへの別のコマンドやパラメーターはないと思います。

ただし、これは手動で行うことができます。 clearCheckSumsが行うことは、databasechangelogテーブルのMD5SUM列を無効にすることだけです。

だから次のようなもの:

update databasechangelog set md5sum=null where filename like '%db.changelog-next.xml';

動作するはずです。

(私はこのSQLをテストしていません。これは単なる例です。したがって、これを本番データベースに適用する前に、これが開発データベースで機能することを確認してください。)

18
Jens

Liquibase用のMavenプラグインを使用している場合、pom.xmlファイルに次のようなものがある可能性があります。ここでは、実行ごとにclearCheckSumをパラメーターとして使用します(ここで行ったようにファイルを分割することをお勧めします)。

        <build>
            <plugins>
                <plugin>
                    <!--NOTE: clearCheckSums=true attribute will make the changesets run only once.
                        The runOnChange attribute added to changesets will not work as originally intended.-->
                    <groupId>org.liquibase</groupId>
                    <artifactId>liquibase-maven-plugin</artifactId>
                    <version>${database.liquibase.version}</version>
                    <executions>
                        <execution>
                            <id>admin-schema-database-update</id>
                            <phase>process-resources</phase>
                            <configuration>
                                <changeLogFile>admin-schema.db.changelog-master.xml</changeLogFile>
                                <driver>${database.driver}</driver>
                                <contexts>${database.liquibasecontext}</contexts>
                                <url>${database.server.url}</url>
                                <username>${database.adminschema.username}</username>
                                <password>${database.adminschema.password}</password>
                                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                                <outputDefaultSchema>true</outputDefaultSchema>
                                <verbose>true</verbose>
                                <logging>${database.liquibase.logging}</logging>
                                <propertyFileWillOverride>false</propertyFileWillOverride>
                                <clearCheckSums>${liquibase.clearCheckSums}</clearCheckSums>
                            </configuration>
                            <goals>
                                <goal>update</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>user-schema-database-update</id>
                            <phase>process-resources</phase>
                            <configuration>
                                <changeLogFile>user-schema.db.changelog-master.xml</changeLogFile>
                                <driver>${database.driver}</driver>
                                <contexts>${database.liquibasecontext}</contexts>
                                <url>${database.server.url}</url>
                                <username>${database.username}</username>
                                <password>${database.password}</password>
                                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                                <outputDefaultSchema>true</outputDefaultSchema>
                                <verbose>true</verbose>
                                <logging>${database.liquibase.logging}</logging>
                                <propertyFileWillOverride>false</propertyFileWillOverride>
                                <clearCheckSums>${liquibase.clearCheckSums}</clearCheckSums>
                            </configuration>
                            <goals>
                                <goal>update</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.liquibase.ext</groupId>
                            <artifactId>liquibase-mssql</artifactId>
                            <version>1.3.0</version>
                        </dependency>                           
                        <dependency>
                            <groupId>org.liquibase.ext</groupId>
                            <artifactId>liquibase-Oracle</artifactId>
                            <version>3.1</version>
                        </dependency>                           
                    </dependencies>
                </plugin>
            </plugins>

            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                    <includes>
                        <include>**/*.xml</include>
                        <include>**/*.csv</include>
                        <include>**/*.sql</include>
                    </includes>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>false</filtering>
                    <excludes>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.csv</exclude>
                        <exclude>**/*.sql</exclude>
                    </excludes>
                </resource>
            </resources>            
        </build>

Mavenではいつでもパラメーター化されたビルドを使用でき、デフォルト値を次のように追加します。

<properties>   
    <liquibase.clearCheckSums>true</liquibase.clearCheckSums>   
    <database.username>userSchema</database.username>   
    <database.password>myUserPassword</database.password>   
    <database.adminschema.username>adminSchema</database.adminschema.username> 
    <database.adminschema.password>myAdminPassword</database.adminschema.password> 
    <database.liquibasecontext>!IntegrationTesting</database.liquibasecontext> 
</properties>
0
Vullnet Prekazi