【问题标题】:Cannot connect with a backup of a derby database using Netbeans or ij无法使用 Netbeans 或 ij 连接 derby 数据库的备份
【发布时间】:2019-08-23 01:01:22
【问题描述】:

我定期备份另一个服务器上的 derby 数据库,只需复制 Derby 数据库的位置即可。所以我有很多备份,具体取决于日期。

在安装 Netbeans 和 Java 1.6(因为该应用程序在此版本上运行)并安装 derby 之后,现在我正在尝试从我的计算机连接到其中一个备份。

应用与 Java DB Network (clientDriver) 连接,连接 URL 为:

jdbc:derby://localhost:1527/C:Derby.DB

我得到的错误是:无法连接。无法使用 org.apache.derby.jdbc.ClientDriver 建立与数据库的连接(DERBY SQL 错误:ERRORCODE: 40000, SQLSTATE: XJ040, SQLERRMC: fail to start database with class loader sun.misc.Launcher$AppClassLoader@610455d6,请参阅详细信息的下一个例外。::SQLSTATE:X0Y32

  • 与 SQLSTATE:X0Y32 关联的错误消息的格式为 '' already exists in ''

我调查了很多,尝试了很多选项,但没有解决方案。

请帮忙! 谢谢

我已经尝试从 ij 连接并得到完全相同的错误。

我尝试从服务器连接并重定向到后台数据库并得到完全相同的错误。

另外,当我尝试通过嵌入式驱动程序连接时,我收到此错误:

ij> 连接'jdbc:derby:C:/database';

----------------------------------- ----------------- Tue Apr 02 08:39:43 COT 2019: Iniciando instancia f81e0010-0169-dae4-8f03-00000e572d50 德比,版本 Apache 软件基础 - Apache Derby - 10.12.1.1 - (1704137):在 使用 sun.misc.Launcher$AppClassLoader@66d3c617 的数据库目录 加载自 文件:/C:/db-derby-10.12.1.1-bin/db-derby-10.12.1.1-bin/lib/derby.jar java.vendor=甲骨文公司 java.runtime.version=1.8.0_201-b09 user.dir=C:\ os.name=Windows 10 os.arch=amd64 os.version=10.0 derby.system.home=null Cargador de clases de base de datos iniciado - derby.database.classpath='' -------------------------------------------------- -------------- Tue Apr 02 08:39:43 COT 2019: Cerrando la instancia f81e0010-0169-dae4-8f03-00000e572d50 en el directorio de base de datos C:\database con cargador de clases sun.misc.Launcher$AppClassLoader@66d3c617 Tue Apr 02 08:39:43 COT 2019 Thread[main,5,main] 启动 java.sql.SQLException 的清理操作: 无法使用建立与数据库的连接 sun.misc.Launcher$AppClassLoader@66d3c617,请参阅例外情况 详细信息。 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知 资源) 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知 资源) 在 org.apache.derby.impl.jdbc.Util.seeNextException(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(未知 资源) 在 org.apache.derby.impl.jdbc.EmbedConnection.(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(未知 资源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.AutoloadedDriver.connect(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 org.apache.derby.impl.tools.ij.ij.dynamicConnection(未知来源) 在 org.apache.derby.impl.tools.ij.ij.ConnectStatement(未知来源) 在 org.apache.derby.impl.tools.ij.ij.ijStatement(未知来源) 在 org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(未知来源) 在 org.apache.derby.impl.tools.ij.utilMain.go(未知来源) 在 org.apache.derby.impl.tools.ij.Main.go(未知来源) 在 org.apache.derby.impl.tools.ij.Main.mainCore(未知来源) 在 org.apache.derby.impl.tools.ij.Main.main(未知来源) 在 org.apache.derby.tools.ij.main(Unknown Source) 引起:错误 XJ040:无法建立与数据库的连接使用 sun.misc.Launcher$AppClassLoader@66d3c617,请参阅例外情况 详细信息。 在 org.apache.derby.iapi.error.StandardException.newException(未知 资源) 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(未知 资源) ... 23 更多原因:错误 X0Y32:语句 'getUDTs' 已存在于模式 'SYS' 中。 在 org.apache.derby.iapi.error.StandardException.newException(未知 资源) 在 org.apache.derby.iapi.error.StandardException.newException(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addSPSDescriptor(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSPSSet(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSystemSps(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.updateMetadataSPSes(未知 资源) 在 org.apache.derby.impl.sql.catalog.DD_Version.handleMinorRevisionChange(未知 资源) 在 org.apache.derby.impl.sql.catalog.DD_Version.upgradeIfNeeded(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.loadDictionaryTables(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startModule(未知 资源) 在 org.apache.derby.impl.services.monitor.FileMonitor.startModule(未知 资源) 在 org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(未知 资源) 在 org.apache.derby.impl.db.BasicDatabase$5.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.impl.db.BasicDatabase.bootServiceModule(未知 资源) 在 org.apache.derby.impl.db.BasicDatabase.boot(未知来源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.bootService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(未知 资源) 在 org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(未知 资源) 在 org.apache.derby.impl.jdbc.EmbedConnection$4.run(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection$4.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.impl.jdbc.EmbedConnection.startPersistentService(未知 资源) ... 20 更多 ============= 开始嵌套异常,级别 (1) ============ java.sql.SQLException: Statement 'getUDTs' 已经存在于模式中 '系统'。 在 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知 资源) 在 org.apache.derby.impl.jdbc.Util.generateCsSQLException(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(未知 资源) 在 org.apache.derby.impl.jdbc.EmbedConnection.(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(未知 资源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.AutoloadedDriver.connect(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 org.apache.derby.impl.tools.ij.ij.dynamicConnection(未知来源) 在 org.apache.derby.impl.tools.ij.ij.ConnectStatement(未知来源) 在 org.apache.derby.impl.tools.ij.ij.ijStatement(未知来源) 在 org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(未知来源) 在 org.apache.derby.impl.tools.ij.utilMain.go(未知来源) 在 org.apache.derby.impl.tools.ij.Main.go(未知来源) 在 org.apache.derby.impl.tools.ij.Main.mainCore(未知来源) 在 org.apache.derby.impl.tools.ij.Main.main(未知来源) 在 org.apache.derby.tools.ij.main(未知来源) 原因:错误 X0Y32:语句 'getUDTs' 已存在于模式 'SYS' 中。 在 org.apache.derby.iapi.error.StandardException.newException(未知 资源) 在 org.apache.derby.iapi.error.StandardException.newException(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addSPSDescriptor(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSPSSet(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSystemSps(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.updateMetadataSPSes(未知 资源) 在 org.apache.derby.impl.sql.catalog.DD_Version.handleMinorRevisionChange(未知 资源) 在 org.apache.derby.impl.sql.catalog.DD_Version.upgradeIfNeeded(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.loadDictionaryTables(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startModule(未知 资源) 在 org.apache.derby.impl.services.monitor.FileMonitor.startModule(未知 资源) 在 org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(未知 资源) 在 org.apache.derby.impl.db.BasicDatabase$5.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.impl.db.BasicDatabase.bootServiceModule(未知 资源) 在 org.apache.derby.impl.db.BasicDatabase.boot(未知来源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.bootService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(未知 资源) 在 org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(未知 资源) 在 org.apache.derby.impl.jdbc.EmbedConnection$4.run(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection$4.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.impl.jdbc.EmbedConnection.startPersistentService(未知 资源) ... 20 更多 ============= 结束嵌套异常,级别 (1) =========== ============= 开始嵌套异常,级别 (2) =========== 错误 X0Y32:语句 'getUDTs' 已存在于模式 'SYS' 中。 在 org.apache.derby.iapi.error.StandardException.newException(未知 资源) 在 org.apache.derby.iapi.error.StandardException.newException(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addSPSDescriptor(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSPSSet(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.createSystemSps(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.updateMetadataSPSes(未知 资源) 在 org.apache.derby.impl.sql.catalog.DD_Version.handleMinorRevisionChange(未知 资源) 在 org.apache.derby.impl.sql.catalog.DD_Version.upgradeIfNeeded(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.loadDictionaryTables(未知 资源) 在 org.apache.derby.impl.sql.catalog.DataDictionaryImpl.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startModule(未知 资源) 在 org.apache.derby.impl.services.monitor.FileMonitor.startModule(未知 资源) 在 org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(未知 资源) 在 org.apache.derby.impl.db.BasicDatabase$5.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.impl.db.BasicDatabase.bootServiceModule(未知 资源) 在 org.apache.derby.impl.db.BasicDatabase.boot(未知来源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.boot(未知 资源) 在 org.apache.derby.impl.services.monitor.TopService.bootModule(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.bootService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(未知 资源) 在 org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(未知 资源) 在 org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(未知 资源) 在 org.apache.derby.impl.jdbc.EmbedConnection$4.run(未知来源) 在 org.apache.derby.impl.jdbc.EmbedConnection$4.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.impl.jdbc.EmbedConnection.startPersistentService(未知 资源) 在 org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(未知 资源) 在 org.apache.derby.impl.jdbc.EmbedConnection.(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 org.apache.derby.jdbc.InternalDriver$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(未知 资源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.InternalDriver.connect(未知来源) 在 org.apache.derby.jdbc.AutoloadedDriver.connect(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 java.sql.DriverManager.getConnection(未知来源) 在 org.apache.derby.impl.tools.ij.ij.dynamicConnection(未知来源) 在 org.apache.derby.impl.tools.ij.ij.ConnectStatement(未知来源) 在 org.apache.derby.impl.tools.ij.ij.ijStatement(未知来源) 在 org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(未知来源) 在 org.apache.derby.impl.tools.ij.utilMain.go(未知来源) 在 org.apache.derby.impl.tools.ij.Main.go(未知来源) 在 org.apache.derby.impl.tools.ij.Main.mainCore(未知来源) 在 org.apache.derby.impl.tools.ij.Main.main(未知来源) 在 org.apache.derby.tools.ij.main(未知来源) ============= 结束嵌套异常,级别 (2) ============ 清理操作已完成错误 XJ040:无法建立与 使用 sun.misc.Launcher$AppClassLoader@66d3c617 的数据库,请参阅 la excepcion siguiente para obtener mas 信息。错误 X0Y32: Schema 'SYS' 中已存在语句 'getUDTs'。

【问题讨论】:

  • 我的猜测是您忘记启动 Derby Network Server,但这只是猜测。当它显示“查看下一个异常以了解详细信息”时,请执行以下操作:wiki.apache.org/db-derby/UnwindExceptionChain 另外,查找由您的 Derby 网络服务器创建的“derby.log”并查看其内容。
  • [1] The error messageSQLSTATE:X0Y32 关联的形式为 '' 已存在于 '' 但它没有显示在您的问题中。您能否更新您的问题以包含它? [2] 什么是“ij”?
  • 好的,我加一下
  • 我还以多种方式启动了 Derby Network Server,通过 Netbeans 以及通过 cmd 中的 startNetworkServer -h 0.0.0.0。

标签: database-connection derby netbeans-8


【解决方案1】:

我发布这个是因为我终于可以恢复损坏的表,并且对于那些会觉得这很有帮助的人。

替换这些文件后我做了什么:c230.dat、c241.dat 和 c251.dat

我调查了如何恢复损坏的表并发现了这个很棒的页面:

https://givemethechills.com/recovering-a-corrupted-embedded-apache-derby-database-after-an-error-xj040-or-if-you-get-an-error-xsdg2/

基本上给出了这些步骤:

  1. 下载最新的 derby bin。
  2. DerbyRecovery-0.0.1-SNAPSHOT.jar 添加到 ij 类路径
  3. 运行dataFileVTI.sql(记得在连接字符串中更改到数据库的路由)
  4. 输入ij,使用upgrade=true连接数据库
  5. 使用call SYSCS_UTIL.SYSCS_REGISTER_TOOL('customTool',true,'RawDBReader', 'CONTROL','RAW_','c:db','','APP',null); -> 更改数据库路由、密码、引导密码和架构
  6. 检查select * from raw_app.table1;

我只得到了第三步,然后决定在ij中用这个命令恢复数据库:

jdbc:derby:sample;restoreFrom=c:\Derby.DB

这很有效。在此之后,我可以访问我需要的表以及所有记录。

所以可能只有在替换文件后在 ij 中运行此命令才能工作,但我将发布我所做的一切以防万一。

感谢所有帮助! 卡琳娜 S.

【讨论】:

    【解决方案2】:

    [这不是一个真正的解决方案,但作为评论发布太长。]

    其他人和你有同样的问题 (ERROR X0Y32: Statement 'getUDTs' already exists...)。请参阅错误报告 DERBY-5371:Database fails to boot, complaining that the getProcedureColumns() system procedure already exists

    线程中的最后一条评论指出:

    我有一个客户在旧数据库上也遇到了这个问题, 与 Andreas 报告的错误相同。

    Caused by: java.sql.SQLException: Statement 'getUDTs' already exists in Schema 'SYS'.

    运行命令:

    values syscs_util.syscs_get_database_property( 'DataDictionaryVersion' )

    返回 10.5。

    我使用加载新的 c230.dat、c241.dat 和 c251.dat 文件的相同技巧来启动数据库。

    我不确定要加载 “新鲜的 c230.dat、c241.dat 和 c251.dat 文件以启动数据库”,具体需要做什么,但如果那样的话对你来说很有意义,可能值得一试。

    【讨论】:

    • 谢谢!这对我帮助很大!它为我指明了正确的方向,发生的事情是我从新数据库中替换了这些文件并且它工作正常,我可以连接数据库。我猜这与一些损坏的文件有关。
    • 现在问题是我想要一张表中的记录,而该表已损坏,我会继续尝试恢复这些记录,谢谢!
    • @KarinaS 太好了。如果您想出解决方案,请发布您自己问题的答案,因为这将对社区有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多