我的生产数据库有一个只读从属数据库,我正在尝试运行一个生成报告的过程。该过程创建一个临时表,插入一些记录,然后从表中选择结果。当我通过命令行界面或db UI工具(Navicat)运行该过程时,这种方法工作得很好,创建的表没有任何问题,我可以插入并接收正确的报告。
当我尝试在Java中使用jdbc调用相同的过程时,问题就开始了。当我运行这个过程时,我得到了一个异常:
Exception in thread "main" java.sql.SQLException: The MySQL server is running with the --read-only option so
我正在建立一个基于java的web应用程序,在SQL服务器上工作。
SQL server的默认数据库隔离级别为READ_COMMITTED。
我得到了以下异常:
Cause: org.hibernate.exception.LockAcquisitionException: Transaction (Process ID 124) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
2016-0
在下面的代码中,persist()返回一个没有异常的异常,但是实体没有存储在数据库中。
@RequestMapping(method = RequestMethod.POST)
public String form() {
EntityManager em = this.emf.createEntityManager();
TaxRates t = new TaxRates();
t.setCountry("US");
// set more properties
em.persist(t);
我使用JDBC将190 000多行插入到informix数据库中的表中。首先,我将连接自动提交设置为false,并且在第1000行上进行连接提交。然而,我得到了这个例外:
java.sql.SQLException: Long transaction aborted.
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3494)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3807
我想使用JBoss/XA Transacion和Mule 3.7中的数据库连接器组件。
但是一个例外是抛出:Transactional action is ALWAYS_JOIN but there is no active transaction (java.lang.IllegalStateException)。
我的事务性场景是:
池+数据库组件- select表A
VM组件只是为了启动一个事务- ALWAYS_BEGIN
数据库组件- MySQL - insert表B
数据库组件- Oracle - insert表C
我们必须确保插入一起运行和提交,或者一起回滚