ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Java Jboss <apache...@hotmail.co.uk>
Subject Re: How to script database upgrade using ANT script
Date Mon, 08 Nov 2010 15:19:06 GMT

Hi,

Thank you to all for the suggestions.  I have now got an ANT script that
checks the current database version and then runs a set of mysql scripts to
upgrade the database to the next version.  What I am struggling with is when
it goes through the list="${db.upgrade.path.list}.  On the first run the
folder exists and runs the scripts then on the second run it checks for the
next folder(it doesn't exist at the moment) and it should drop out echoing
the new current version but in my case it tries to run every occurrence as 
per the  list="${db.upgrade.path.list}. I want it to stop when it can't meet
the next condition.  The output I am getting is as below:

<!-- *************************************** 
  Restore MySQL database 
  **************************************** -->   
<target name="restore-db" > 
    <!-- Clean up the database by deleting and then creating it. --> 
    <antcall target="delete_db"/> 
    <antcall target="create_db"/> 
<!-- Import data from the backup file. --> 
    <exec executable="${my.sql}" input="db_dumps/db1.sql"> 
      <arg value="--user=root"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema1>"/> 
    </exec> 
   <exec executable="${my.sql}" input="db_dumps/db2.sql"> 
      <arg value="--user=root"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema2>"/> 
    </exec> 
  <exec executable="${my.sql}" input="db_dumps/db3.sql"> 
      <arg value="--user=root"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema3>"/> 
    </exec> 
  <exec executable="${my.sql}" input="db_dumps/db4.sql"> 
      <arg value="--user=root"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema4>"/> 
    </exec> 
</target> 
      
  <target name="delete_db"> 
    <exec executable="${my.sql}"> 
      <arg value="--user=root"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="--force"/> 
      <arg value="drop"/> 
      <arg value="<newschema1>"/> 
      <arg value="<newschema2>"/> 
      <arg value="<newschema3>"/> 
      <arg value="<newschema4>"/> 
    </exec> 
  </target> 
  
  <target name="create_db"> 
    <exec executable="${my.sql}"> 
      <arg value="--user=root"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="--force"/> 
      <arg value="create"/> 
      <arg value="<newschema1>"/> 
      <arg value="<newschema2>"/> 
      <arg value="<newschema3>"/> 
      <arg value="<newschema4>"/> 
    </exec> 
  </target> 

<!-- *************************************** 
  Get database version 
  **************************************** -->   
<target name="get-db-version" > 
       <exec executable="${my.sql}" outputproperty="get-db-version.out"
input="getdbver.sql"> 
           <arg line="--host=${server.ip}"/> 
           <arg line="--user=root"/> 
           <arg line="--password=<password>"/> 
           <arg line="-D${newschema1}"/> 
     </exec> 
   <echo>Is at ${get-db-version.out}</echo> 
</target> 

<!-- ************************************************ 
           Check database upgrade scripts exists 
  *********************************************** --> 
<target name="db-version" if="get-db-version.out" depends="get-db-version" > 
   <echo>Running upgrade from ${get-db-version.out}</echo> 
        
 <condition property="script1.exists"> 
           <available filepath="<directory>" file="script1.sql"/> 
        </condition> 
         <antcall target="run-script1"/> 
       <condition property="script2.exists"> 
           <available filepath="<directory>" file="script2.sql"/> 
        </condition> 
   <antcall target="run-script2"/> 
 <condition property="script3.exists"> 
           <available filepath="<directory>" file="script3.sql"/> 
        </condition> 
   <antcall target="run-script3"/> 
 <condition property="script4.exists"> 
           <available filepath="<directory>" file="script4.sql"/> 
        </condition> 
   <antcall target="run-script4"/> 
</target> 

<!-- *************************************** 
              Run database upgrade scripts 
  **************************************** -->   
<target name="run-script1" if="script1.exists" > 
      <echo>Running sql in dir <directory></echo> 
      <exec executable="${my.sql}" input="<directory>/script1.sql"
failonerror="true"> 
      <arg value="--user=<username>"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema1>"/> 
      </exec> 
</target> 
<target name="run-script2" if="script2.exists" > 
      <echo>Running sql in dir <directory></echo> 
      <exec executable="${my.sql}" input="<directory>/script2.sql"
failonerror="true"> 
      <arg value="--user=<username>"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema1>"/> 
      </exec> 
</target> 
<target name="run-script3" if="script3.exists" > 
      <echo>Running sql in dir <directory></echo> 
      <exec executable="${my.sql}" input="<directory>/script3.sql"
failonerror="true"> 
      <arg value="--user=<username>"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema1>"/> 
      </exec> 
</target> 
<target name="run-script4" if="script4.exists" > 
      <echo>Running sql in dir <directory></echo> 
      <exec executable="${my.sql}" input="<directory>/script4.sql"
failonerror="true"> 
      <arg value="--user=<username>"/> 
      <arg value="--password=<password>"/> 
      <arg value="--host=localhost" />   
      <arg value="--port=3306" />   
      <arg value="<newschema1>"/> 
      </exec> 
</target> 


OUTPUT

get-db-version:
     [echo] Current database version: 1.00

db-upgrade:
     [echo] Current Version: 1.00
     [echo] Upgrade path : 1.0-2.0
     [echo] database......... mysql
     [echo] tx............... standalone
     [echo] mail.smtp.host... localhost

get-db-version:
     [echo] Current database version: 1.01

db-upgrade:
     [echo] Current Version: 1.01
     [echo] Upgrade path : 2.0-3.0
     [exec] Failed to open
../build/dir-upgrade-2.0-3.0/Upgrade-1.01-1-Pre.sql
     [exec] Failed to open
../build/dir-upgrade-2.0-3.0/Upgrade-1.01-2-Data.sql
     [exec] Failed to open
../build/dir-upgrade-2.0-3.0/Upgrade-1.01-3-Post.sql
     [exec] Failed to open
../build/dir-upgrade-2.0-3.0/Upgrade-1.01-4-Version.sql
     [echo] database......... mysql
     [echo] tx............... standalone
     [echo] mail.smtp.host... localhost

get-db-version:
     [echo] Current database version: 1.01

db-upgrade:
     [echo] Current Version: 1.01
     [echo] Upgrade path : 3.0-4.0
     [exec] Failed to open
../build/dir-upgrade-3.0-4.0/Upgrade-1.01-1-Pre.sql
     [exec] Failed to open
../build/dir-upgrade-3.0-4.0/Upgrade-1.01-2-Data.sql
     [exec] Failed to open
../build/dir-upgrade-3.0-4.0/Upgrade-1.01-3-Post.sql
     [exec] Failed to open
../build/dir-upgrade-3.0-4.0/Upgrade-1.01-4-Version.sql

BUILD SUCCESSFUL



-- 
View this message in context: http://ant.1045680.n5.nabble.com/How-to-script-database-upgrade-using-ANT-script-tp3250375p3255191.html
Sent from the Ant - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message