使用Phing检查数据库是否存在

时间:2012-09-27 17:24:26

标签: php ant phing ant-contrib

我想在我的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条件中使用。问题是,我不知道这是否可能;我在文档中看不到有关在自定义任务中分配属性的任何内容,而谷歌也没有帮助。

有没有人有任何想法?

1 个答案:

答案 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>