我想在我的Phing build.xml 中执行以下操作:
<if>
<not>
<dbexists dsn="mysql:host=${database.host}" username="${database.username}" password="${database.password}" database="${database.name}"/>
</not>
<then>
<pdosqlexec url="mysql:host=${database.host}" userid="${database.username}" password="${database.password}">
CREATE DATABASE ${database.name};
</pdosqlexec>
<pdosqlexec url="mysql:host=${database.host};dbname=${database.name}" userid="${database.username}" password="${database.password}">
<transaction src="create-database-schema.sql"/>
</pdosqlexec>
</then>
</if>
不幸的是,我想不出任何可行的方法。显然不存在 dbexists 任务,并且无法创建自定义条件。
唯一剩下的可能性是创建一个自定义任务(在PHP中)检查数据库是否存在并返回“是”或“否”,可以将其分配到属性并在Phing条件中使用。问题是,我不知道这是否可能;我在文档中看不到有关在自定义任务中分配属性的任何内容,而谷歌也没有帮助。
有没有人有任何想法?
答案 0 :(得分:1)
我认为您应该可以使用<trycatch>
任务。
<trycatch property="error">
<try>
<pdosqlexec url="mysql:host=${host}" userid="${username}" password="${pw}">
CREATE DATABASE ${database.name};
</pdosqlexec>
</try>
<catch>
<echo message="${error}" />
</catch>
</trycatch>