【问题标题】:Does the error "Table/View 'TABLE_1' already exists in Schema 'MYSCHEMA_1'" affect the application?错误“表/视图‘TABLE_1’已存在于模式‘MYSCHEMA_1’中”是否会影响应用程序?
【发布时间】:2016-01-07 14:51:27
【问题描述】:

我一直在使用 Netbeans 开发一个 Swing 应用程序,使用的数据库是 Derby。

在开发阶段,我一直在使用在本地机器上运行的 Derby 实现,这个 derby 实例与应用程序是分开的。

目前我正在尝试在生产环境中导入程序,并且我希望应用程序为每个实例都有一个 derby Db。

我正在使用一个连接到数据库并创建几个表的类。 当程序第一次运行时程序运行正常,进一步运行显然会抛出以下错误:

java.sql.SQLTransactionRollbackException: Table/View 'TABLE_1' already exists in Schema 'MYSCHEMA_1'.
at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.ClientStatement.execute(Unknown Source)
at clienteditor.DerbyInitializer.main(DerbyInitializer.java:52)
at clienteditor.ClientEditor.main(ClientEditor.java:2224)
Caused by: ERROR X0Y32: Table/View 'TABLE_1' already exists in Schema 'MYSCHEMA_1'.
at org.apache.derby.client.am.ClientStatement.completeSqlca(Unknown Source) 

我的问题是:考虑到应用程序可以正常工作,这个错误是否会以任何方式影响我的应用程序?在我看来,它被绕过和忽略了。

感谢阿尔伯

【问题讨论】:

  • 此异常是否会导致您的应用程序出现问题取决于您的应用程序。抛出异常不会对 Derby 造成问题,但您的应用程序如何处理异常是一个不同的问题,并且完全取决于您的应用程序在收到异常时会做什么。
  • 嗨,布莱恩,很抱歉我的回复晚了;因此,如果我的代码看起来像这样,并且应用程序没有崩溃,那么尝试 { stmt.execute("create table ...."); 应该没有任何问题} 捕捉(异常 e){ e.printStackTrace(); }
  • 这似乎是捕捉和忽略表已存在异常的好方法。您可以优化代码以捕获更具体的异常,并避免 printStackTrace,除非您收到意外异常,但总体技术应该没问题。

标签: java swing derby


【解决方案1】:

我们最近开始使我们的项目与 hibernate 3 和 5 兼容,同时尝试重构并遇到了类似的问题。我们使用 Derby 数据库进行本地测试。当我重构以从休眠会话获取创建查询时,我遇到了这个问题(对于休眠 5,因为我们无法像使用休眠 3 那样从休眠会话获取连接)。

第一个建议是删除在 Eclipse 工作空间中创建的特定项目的本地 derby 文件夹并尝试。 如果问题仍然存在,请尝试检查您是如何编写查询的,如果有办法在开始运行之前重构代码,请删除该项目的现有 derby,然后运行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    相关资源
    最近更新 更多