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: [email protected]
For additional commands, e-mail: [email protected]