【发布时间】: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,除非您收到意外异常,但总体技术应该没问题。