Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 检查数据库(连接)是否存在的Ant任务?_Oracle_Ant_Ora 01017 - Fatal编程技术网

Oracle 检查数据库(连接)是否存在的Ant任务?

Oracle 检查数据库(连接)是否存在的Ant任务?,oracle,ant,ora-01017,Oracle,Ant,Ora 01017,在ANT中是否有可能在构建不失败的情况下检查数据库(连接)是否存在 例如: <target name="check-database-available"> <sql classpath="${oracle.jar}" driver="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@${my.db.host}:${my.db.port}:${my.db.sid}" use

在ANT中是否有可能在构建不失败的情况下检查数据库(连接)是否存在

例如:

<target name="check-database-available">
    <sql
        classpath="${oracle.jar}" driver="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@${my.db.host}:${my.db.port}:${my.db.sid}" 
        userid="${my.db.user}" 
        password="${my.db.pw}"
        onerror="continue" errorproperty="exit.status">
        select * from dual;
    </sql>
    <echo message="### exit status = ${exit.status}" />
</target>

因为数据库还不存在。将“onerror”设置为“continue”并检查“errorproperty”将不起作用,因为任务似乎没有执行。

从Ant v 1.8.0开始,您可以对SQL任务使用
failOnConnectionError
属性

说明如下:

如果为false,则仅打印警告消息,如果任务无法连接到数据库,则不会执行任何语句


这看起来可以解决您的问题。

这里有一个解决方法,可以设置db.present属性(checkpresence.sql是一个简单的select语句)


我正是出于这个目的而使用它的,但由于某些原因,errorproperty从未设置过——这意味着无法知道连接是否成功(没有解决方法)
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
<target name="check-db-presence">
  <echo message="Checking database presence at: ${db.url}"/>
  <delete file="tmp/db.present"/>
  <sql driver="${db.driver}" url="${db.url}"
                     userid="${db.userName}" password="${db.password}"
                     failOnConnectionError="false" onerror="continue" warningproperty="db.empty" errorproperty="db.empty" 
                      src="scripts/${db.platform}/checkpresence.sql"
                    print="true" output="tmp/db.present"/>
  <condition property="db.present">
    <available file="tmp/db.present"/>
  </condition>
</target>