【发布时间】:2010-06-13 11:31:10
【问题描述】:
我有一个 SQL 脚本,想在 ANT 任务中应用它。 此脚本清除架构,创建新表和视图。
ANT定义的任务如下:
<sql driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://host:3306/smth"
userid="smth"
password="smth"
expandProperties="false"
autocommit="true"
src="all.sql"
>
</sql>
当这个任务启动时,它会在日志中显示表已被清除和创建。但是当它尝试创建第一个视图时,它失败了:
Failed to execute: CREATE VIEW component... AS SELECT component_raw.id AS
MySQLSyntaxErrorException: Table 'component_raw' doesn't exist
我不知道为什么它在这里失败。 从 MySQL 查询浏览器运行这个 all.sql 没有错误。 当我使用 -v 选项启动 ANT 时,我没有看到任何“COMMIT”消息..
请帮忙解决问题。
【问题讨论】:
-
CREATE VIEW 是一种 DDL(数据定义语言)语句,而不是 SQL 语句。 DDL 不需要 COMMIT。你确定
component_raw存在吗? -
在 all.sql 我有: DROP TABLE component_raw; .. 创建表 component_raw(..); .. CREATE VIEW 组件 .. // 基于component_raw 应该创建表component_raw,但是由于没有相对于它的创建的COMMIT,所以在执行create view时,它在DB中还不存在..也许我应该仅通过运行 exec 任务来创建视图?
标签: sql ant task autocommit