-1

在 Spring 中有一个如下配置的数据源。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
      destroy-method="close">
    <property name="driverClassName" value="${prop_jdbc.driverClassName}"/>
    <property name="url" value="${prop_jdbc.url}"/>
    <property name="username" value="${prop_jdbc.username}"/>
    <property name="password" value="${prop_jdbc.password}"/>
    <property name="initialSize" value="2"/>
    <property name="maxActive" value="5"/>
    <property name="maxIdle" value="2"/>
    <property name="poolPreparedStatements" value="true"/>
    <property name="maxOpenPreparedStatements" value="-1"/>
    <!-- property name="defaultAutoCommit">
       <value>false</value>
    </property-->
</bean>   

现在,我首先使用从上面的数据源创建的 jdbcTemplate 进行 DROP TABLE,然后在下一个语句中,我再次创建相同的 TABLE,最后尝试在第三个语句中立即 DROP 它。

jdbcTemplate.update( dropSql,new Object[] { });
jdbcTemplate.update( createSql,new Object[] { });
jdbcTemplate.update( dropSql,new Object[] { });

在@Brian 评论后编辑

在第一条语句之后,表立即被删除,第二条语句也立即创建它,但第二次,DROP 没有发生..也没有错误..

JdbcTemplate 是否立即或定期执行 DROP,因为这很难理解,使用相同的数据源为什么不发生第二次 DROP 时第一次发生 2 行之前..?

4

1 回答 1

2

DDL - 像创建和删除一样不是事务性的。请分享正在执行的实际 ddl。我建议在没有实际的 SQL 审查的情况下使用执行方法而不是 jdbcTemplate 上的更新方法。

您在代码的每次失败尝试之间删除表是做什么的?

于 2013-04-20T23:32:31.877 回答