【问题标题】:Problem with autocommit in ANT SQL taskANT SQL 任务中的自动提交问题
【发布时间】: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


【解决方案1】:

我遇到了完全相同的问题,原来我的 sql 文件中有 cmets 以 # 开头。 将 # 替换为 *-- * 后一切正常。

【讨论】:

  • 这正是对我有帮助的!评论风格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
相关资源
最近更新 更多