我从来没有第一次让这个工作,但现在我似乎根本无法做到。
某处有一个使用数据库的连接池,因此在应用程序使用数据库时尝试删除数据库应该会出现此错误。问题是当我发出这些命令时没有与数据库的连接:
db2 connect to mydatabase
db2 quiesce database immediate force connections
db2 connect reset
db2 drop database mydatabase
Run Code Online (Sandbox Code Playgroud)
这总是给:
SQL1035N The database is currently in use. SQLSTATE=57019
Run Code Online (Sandbox Code Playgroud)
运行此命令显示没有连接/应用程序
DB2 list applications
Run Code Online (Sandbox Code Playgroud)
我什至可以停用数据库,但仍然无法删除它。
db2 => deactivate database mydatabase
DB20000I The DEACTIVATE DATABASE command completed successfully.
db2 => drop database mydatabase
SQL1035N The database is currently in use. SQLSTATE=57019
db2 =>
Run Code Online (Sandbox Code Playgroud)
有人有任何线索吗?我正在以本地管理员(Windows 2008)的身份运行 cmd-windows,这也是 DB2 的管理员。connectionpool-user 在静止状态期间无法连接。
我在 IBM DB2 的自动增量列方面遇到了一些麻烦。起初,我的所有列都被定义为GENERATED ALWAYS,但是由于我在使用“db2 import ...”命令时遇到了这个问题,我将它们更改为GENERATED BY DEFAULT。这是必要的,因为我需要 ID 保持一致,因为其他表引用了它们。因此,不能使用“db2 import ... modified by identityignore ...”。
当我现在导入数据时,ID 被正确插入,但每次我这样做时,我必须记住通过获取最高的 Id+1 并像这样更改列来为自动增量列设置一个新的开始:
SELECT MAX(mycolumn)+ 1 FROM mytable;
ALTER TABLE mytable ALTER COLUMN mycolumn RESTART WITH <above_result>;
Run Code Online (Sandbox Code Playgroud)
如果我忘记了这一点,Insert-Statement 将因重复的 PK 错误而失败,因为自动增量列是主键。
所以我的问题是:有没有办法找到自动增量列的下一个值,所以我可以编写语句来检查,如果这个值小于 SELECT MAX 并且需要设置?
或者:这整个事情是不是像我觉得的那么复杂?我可以以某种方式导入数据,保留 ID 并使自动增量列仍按预期工作吗?
有没有办法将备份在 Windows XP 中的 db2 数据库恢复到 linux 机器上?我在两个操作系统上使用相同版本的 db2 -> DB2 Express-C 9.7 源操作系统:Windows XP SP2 目标操作系统:Ubuntu 9.04
我有一个 iseries 数据库,我想在它上面构建网页。我想使用 Java 平台,并希望就 Apache 与 Websphere 作为最佳选择平台的优势提出建议。我现在也没有。我真的对 Websphere 的所有组件感到困惑。