2015-05-13 15 views
25

Liquibase 3.2'yi Java 6 ile kullanıyoruz. Liquibase'i aynı deyimleri Liquibase dosyalarımızdan yeniden çalıştırmadan sağlama toplamlarını yeniden hesaplamaya zorlamanın bir yolu var mı? Bizim veritabanında, bu koşmak ...Liquibase'i, deyimleri yeniden çalıştırmadan sağlama toplamlarını yeniden hesaplamaya nasıl zorlayabilirim?

Ancak
update DATABASECHANGELOG set md5sum = null where 1; 

, benim Liquibase değişiklik komut dosyalarını çalıştırdığınızda, bazı infaz yine de aşağıdaki hatalarla başarısız ... İşte

invoking liquibase change script with file /tmp/deploywork/db.changelog-master.xml 
running /usr/java/liquibase/liquibase --logLevel=info --driver=com.mysql.jdbc.Driver --classpath=/usr/java/jboss/modules/com/mysql/main/mysql-connector-java-5.1.22-bin.jar --changeLogFile=/tmp/deploywork/db.changelog-master.xml --url="jdbc:mysql://myservername:3306/my_db" --username=username --password=password update 
INFO 5/13/15 2:15 PM: liquibase: Successfully acquired change log lock 
INFO 5/13/15 2:15 PM: liquibase: Reading from my_db.DATABASECHANGELOG 
INFO 5/13/15 2:15 PM: liquibase: Successfully released change log lock 
Unexpected error running Liquibase: Validation Failed: 
    3 change sets check sum 
      db.changelog-1.0.xml::1357593229391-25::rob (generated) is now: 7:5cfe9ecd779a71b6287ef2360a6979bf 
      db.changelog-7.0.xml::create-address-email-index::davea is now: 7:da0132e30ebd6a1bc52d9a39bb8c56d7 
      db.changelog-7.0.xml::add-myproject-event-object-id-col::davea is now: 7:2eab5d784647ce33ef3488aa8c383443 


SEVERE 5/13/15 2:15 PM: liquibase: Validation Failed: 
    3 change sets check sum 
      db.changelog-1.0.xml::1357593229391-25::rob (generated) is now: 7:5cfe9ecd779a71b6287ef2360a6979bf 
      db.changelog-7.0.xml::create-address-email-index::davea is now: 7:da0132e30ebd6a1bc52d9a39bb8c56d7 
      db.changelog-7.0.xml::add-myproject-event-object-id-col::davea is now: 7:2eab5d784647ce33ef3488aa8c383443 

liquibase.exception.ValidationFailedException: Validation Failed: 
    3 change sets check sum 
      db.changelog-1.0.xml::1357593229391-25::rob (generated) is now: 7:5cfe9ecd779a71b6287ef2360a6979bf 
      db.changelog-7.0.xml::create-address-email-index::davea is now: 7:da0132e30ebd6a1bc52d9a39bb8c56d7 
      db.changelog-7.0.xml::add-myproject-event-object-id-col::davea is now: 7:2eab5d784647ce33ef3488aa8c383443 

    at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:181) 
    at liquibase.Liquibase.update(Liquibase.java:191) 
    at liquibase.Liquibase.update(Liquibase.java:174) 
    at liquibase.integration.commandline.Main.doMigration(Main.java:997) 
    at liquibase.integration.commandline.Main.run(Main.java:170) 
    at liquibase.integration.commandline.Main.main(Main.java:89) 

biridir değişim komut Dediğim gibi

<changeSet author="davea" id="add-myproject-event-object-id-col"> 
     <addColumn tableName="sb_myproject_event"> 
      <column name="OBJECT_ID" type="VARCHAR(32)"/> 
     </addColumn> 
     <createIndex indexName="SB_myproject_EVENT_IDX" 
      tableName="sb_myproject_event" 
      unique="false"> 
      <column name="OBJECT_ID" type="varchar(32)" /> 
     </createIndex> 
     <sql>update sb_myproject_event set object_id=LEFT(SUBSTRING_INDEX(event_data, '&quot;id&quot;:&quot;', -2), 24) where object_id is null and event_data is not null;</sql> 
     <!-- Delete older events that no longer need to be processed --> 
     <sql>delete from sb_myproject_event where id not in (select q.* from (select e.id FROM sb_myproject_event e, (select object_id, max(date_processed) d from sb_myproject_event group by object_id) o where e.object_id = o.object_id and e.date_processed = o.d) q);</sql> 
    </changeSet> 

, ben sadece toplamlarını yeniden hesaplamak istiyorum ... şikayetçi olduğunu belirler (biz Liquibase versiyonlarını değiştirerek çünkü bunu yapmak zorunda).

cevap

42

Aksine kendinizi SQL kullanarak toplamlarını temizlemek yerine, muhtemelen Liquibase izin daha iyi olacaktır clearCheckSums komutunu kullanarak bunu:

http://www.liquibase.org/documentation/command_line.html

veritabanından güncel checksum'ları kaldırır. Bir sonraki çalıştırmada toplamlar yeniden hesaplanacaktır.  

+2

Merhaba, yukarıda listelenen komuta içine "--clearCheckSums" eklendi, ancak hatayı aldık "CİDDİ 5/14/15 03:09: liquibase: '--clearCheckSums' ayrıştırılamadı" –

+4

clearCheckSums bir komut (güncellemeye benzer) ve bir seçenek değil - önceden - '' gerektirmez. – SteveDonie

+4

update databasechangelog set md5sum = null nerede id '% 62%' gibi; –

İlgili konular