我想导出一个Informix数据库,以便稍后导入到另一个实例中。为此,我执行了下面的命令,它以错误结束。我重新启动了实例,但错误仍然存在。
bash-2.00$ dbexport mydb1 -ss
-425 - Database is currently opened by another user.
-107 - ISAM error: record is locked.
请注意,我还将数据库模式更改为在线模式、静态模式和管理员模式(单用户模式)。但是同样的错误。
我使用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
我正在修复EclipseLink的InformixPlatform数据库支持类,以便使用Informix11.70安装。
需要工作的合同之一由以下代码表示。这些文件解释了所需的:
/**
* INTERNAL:
* Indicates whether the platform supports local temporary tables.
* "Local" means that several threads may create
* temporary tables with the same name.
[snip]
*/
public boolean
我有以下代码:
Query query = this.getSession().createSqlQuery("select * from db@server:table where 1=1");
List list = query.list();
这会引发此错误:
org.hibernate.QueryException:并非所有命名参数都已设置:org.hibernate.QueryException
:似乎被认为是一个参数前缀。
如何在不同数据库之间进行查询?目前,我使用的数据库是informix11。
下面是我希望阻止在服务器上运行的那种查询的示例:
begin
While True
LOOP
dbms_output.put_line('tst');
END LOOP;
end
此查询(或其他类似查询)可能通过Oracle JDBC瘦驱动程序攻击我的Oracle服务器。我愿意阻止这个查询在JDBC配置级别、数据库服务器配置级别上运行,或者通过模式中的用户权限运行。我希望用户能够继续运行正常的select/insert/update/delete查询。老实说,如果没有PL/SQL类型的命令可用,而只有标准SQL,我会非常高兴的。
更新
我还应该提到,我希望