- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在 Oracle WebLogic 服务器中部署了一些 Web 服务,这些服务的主要职责是调用存储过程并将这些数据发送给客户端。服务的技术栈是:
服务从 WebLogic 提供的连接池获取到数据库的连接。几个月来,服务运行良好,但现在我们遇到了以下问题:
SERVER: WLSDesa_ManagedServer1 [DEBUG] [15-05-2013 12:23:03.897] (JakartaCommonsLoggingImpl.java:46) - ooo Using Connection [weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@59bd]
SERVER: WLSDesa_ManagedServer1 [DEBUG] [15-05-2013 12:23:03.898] (JakartaCommonsLoggingImpl.java:46) - ==> Preparing: { call package.iOnlyDoASelect( ?, ?) }
a.package.from.project.CommonException: org.springframework.jdbc.UncategorizedSQLException:
### Error querying database. Cause: java.sql.SQLException: ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
### The error may exist in a/package/from/the/project/ImAMyBatisMap.xml
### The error may involve a.package.from.the.project.ImADaoClass.invokeProcedure-Inline
### The error occurred while setting parameters
### SQL: { call package.iOnlyDoASelect( ?, ?) }
### Cause: java.sql.SQLException: ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
; uncategorized SQLException for SQL []; SQL state [72000]; error code [14552]; ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
; nested exception is java.sql.SQLException: ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
该过程只是对多个表的Select
,我们可以从其他Java 应用程序和数据库客户端正常调用它;在服务中,我们没有使用任何明确的事务管理代码。该问题偶尔会发生并使服务无用。我们的解决方法是重新启动 WebLogic Server 或关闭自动提交然后再打开。这种情况几乎每天发生 5 次。
有什么线索吗? WebLogic 是否相关,它的 Web 服务代码的数据库问题?
最佳答案
根据评论,这不是答案,而是显示可能发生的情况的示例,如果您的查询在某个时刻调用函数。
create function f42 return number as
begin
commit;
return 0;
end;
/
Function created.
SQL> select * from dual where extract(day from sysdate) = 16 or f42 = 0;
D
-
X
这很好,因为今天是 16 号,所以 or
的第一部分为真,第二部分不需要计算;所以这个函数没有被调用。仅更改我要查找的日期:
SQL> select * from dual where extract(day from sysdate) = 15 or f42 = 0;
select * from dual where extract(day from sysdate) = 15 or f42 = 0
*
ERROR at line 1:
ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
ORA-06512: at "STACKOVERFLOW.F42", line 3
这次 or
的第一部分是 false,所以它确实调用了抛出错误的函数。
但是错误堆栈会向您显示问题的真正来源,当然除非您正在捕获(并压扁)堆栈,或者您的客户没有报告它。从 SQL*Plus 直接调用包过程将显示整个堆栈 - 假设您知道导致问题的参数并且您没有消除错误。
但尚不清楚该问题是仅影响某些参数值,还是基于某些 transient (如 sysdate
),或者实际上完全是由其他原因引起的。不过,我会先看看您是否可以像这样可靠地复制它,如果可以,那么错误堆栈应该能让您更好地了解发生了什么。
关于web-services - ORA-14552 : cannot perform a DDL, 在查询或 DML 中提交或回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16576664/
首先,我使用的是 11gR2 SQL> select * from v$version; BANNER ------------------------------------------------
在我的例子中,我有一个包含 2,976,977 条记录的 Mysql 表。该表在两列上有索引,我在更新和插入来自多个客户端的记录时使用了这两列。问题是更新或插入值花费了太多时间。有什么办法可以加快速度
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我无法说服为什么我不能在 中添加 DML 操作Oracle 函数 特别是里面游标循环 .我觉得 Oracle 不支持游标循环内的 DML 操作。 如果我需要在游标循环内插入表格,我该怎么办?在其中创建
这个问题在这里已经有了答案: Solution to "cannot perform a DML operation inside a query"? (3 个答案) 关闭 9 年前。 我收到这个错
我正在使用数组 DML 操作来加速将大量记录插入 SQL 数据库。原理描述here 。如何使用此功能的示例代码: TFDQuery *FDQuery1; ... FDQuery1->SQL->Text
我对 Oracle 11g 上的 BULK COLLECT 逻辑有疑问。 存储过程中的原始逻辑是: PROCEDURE FOO(IN_FOO IN VARCHAR2) IS BEGIN FOR C
我正在从这样的批量插入操作中捕获错误: begin --bulk insert forall i in v_data.first .. v_data.last save excepti
这是我第一次发布问题,对于任何格式问题深表歉意。 我这里有一段代码: Code 但我不断收到错误:“在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #1 包含非聚合列 'mysql
我已经在 MySQL 中创建了一个表 create table bittest (id int(11),constant bit(1) default b'0' ); 然后, insert into
对于给定的时间段(包括两个给定日期),例如 2002 年 12 月 1 日至 2003 年 7 月 31 日,找到在指定时间内至少拥有一张 EZ link 卡的人的集合。为了集合中的每个人,列出 (i
我的 MySQL 5.5 服务器已设置 autocommit=1。 我的存储过程有几个 DML,但没有明确的事务管理。 当我从 MySQL CLI 发出 call the_procedure() 时(
我有一个严重依赖 MySQL 回滚进行单元测试的 Spring/JDBC 应用程序。我发现,如果我在这些事务中执行某些 DDL 操作(即使是在临时表上),即使在正常的 DML 语句上,回滚也会失败。例
我正在尝试建立一个数据库,该数据库将根据 ID 号存储故事信息。现在我正在努力将上述信息放入表格中。我正在学习 python 和 sql,所以请耐心等待。 Pylint 告诉我在引用 title.in
我正在寻找一种使用 Pl/SQL 来检查由“立即执行”执行的语句是否为 dml 语句的方法。 最佳答案 可能有一个解决方案来检查查询字符串是否包含“INSERT”或“UPDATE”或... 但我认为这
我听说过有关数据库的术语 DDL 和 DML,但我不明白它们是什么。 它们是什么以及它们与 SQL 有何关系? 最佳答案 以下内容改编自这里MySQL What is DDL, DML and DCL
我听说过有关数据库的术语 DDL 和 DML,但我不明白它们是什么。 它们是什么以及它们与 SQL 有何关系? 最佳答案 以下内容改编自此处MySQL What is DDL, DML and DCL
hive :-创建表,AlterTable等完成需要一些后端DML(MetaStore)。 哪个类的人会做这些? 哪个类将从MetaStore获取数据库凭证? 最佳答案 您可以查看org.apache
我需要导出特定对象及其对 DML 的引用,然后另一个应用程序将使用 DML 获取文件并将其导入。数据库模式当然是相同的。 是否有一些工具可以做到这一点,或者我必须使用带选项的 mysql 转储? 我感
仅供引用 - 我不是开发人员,但在必须时编写代码:) 尝试编写一些 java 代码以批量方式更新数据库的多个记录。当我插入新行时,我正在查询另一个表以查找相关数据以添加相关日期。 代码似乎可以工作,但
我是一名优秀的程序员,十分优秀!