我有这个ant脚本,它应该创建表customer。我看到消息“正在更新数据库...”所以我知道它被调用了,但是当它遇到sql任务时,没有输出任何东西,所以我很难理解哪里出了问题。“升级完成”。消息永远不会显示,所以我认为在某个地方有致命的错误。
我将sqljdbc4.jar驱动程序与其他库放在%ANT_HOME%/lib中,它们可以正常读取。如果我知道哪里出了问题,我至少可以寻找解决方案,但就目前而言,我受到任何有过类似问题的人的摆布。当然,这是一个显而易见的问题,我就是看不出来。我们将非常感谢您的任何意见。
该任务的代码如下:
<!-- =================================
target: execute-script
================================= -->
<target name="execute-script">
<echo message="Updating database..." />
<sql print="true" failOnConnectionError="true"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DatabaseName=database;selectmethod=cursor"
userid="ctsql"
password="ctsqlone">
<transaction>
CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date datetime);
</transaction>
</sql>
<echo message="Upgrade complete." />
</target>发布于 2011-01-11 20:43:36
通常不会在事务中发出DDL语句(create table等)。您可以尝试删除封闭的事务吗?
例如,Sybase不允许这样的语句引发错误:
The 'CREATE TABLE' command is not allowed within a multi-statement transaction in the 'xxxxx' database.我没有可以使用的SQL Server实例,但我希望有类似的行为。
发布于 2011-01-11 21:24:14
我已经回答了我自己的问题。我从我自己的自定义任务中调用了目标,异常被捕获,构建正常继续,没有显示任何错误消息。目前我还有其他问题,但我想我现在可以让它工作了,因为我看到了我得到的错误。
再次向您道歉。
https://stackoverflow.com/questions/4657050
复制相似问题