Apache Derby是一款非常小巧的数据库管理软件,它是用Java编写的,需要在JVM中运行,它在开发中应用广泛,可内嵌在应用程序中使用,也可以作为单独的数据库服务器使用。

软件说明
Apache Derby是一个完全用java编写的数据库,所以可以跨平台,但需要在JVM中运行。Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。
常见问题解答
1、访问 Apache Derby 数据库时,在 SQLException 中发生意外的 IOException
此问题的发生可能是因为 Apache Derby 数据库使用大量文件。某些操作系统(如 Solaris Operating Environment),限制应用程序可以同时打开的文件 数。如果缺省值较小(如 64),那么您可能会获取此异常。
如果您可以在操作系统上配置了文件描述符的数量,那么可以通过将数值设置为很大的值(如 1024)来更正此问题。
2、当访问 Apache Derby 时,“为更新选择”操作导致表锁定和死锁
如果一行上的“为更新选择”操作锁定创建死锁条件的整个表,那么原因可能是您未对该表定义索引。您在 where 子句中使用的列上缺乏索引会导致 Apache Derby 创建表锁定而不是行级别锁定。
要解决此问题,对受影响的表创建索引。
3、运行应用程序导致产生不可读消息的运行时异常
在客户机运行时,您可能接收到与以下类似的消息:Caused by: com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -1, SQLSTATE: 42X05, SQLERRMC: ANNUITYHOLDER20^T42X05
发生此问题的原因是未设置 WebSphere® Application Server 所需的属性 retrieveMessagesfromServerOnGetMessage。
要解决此问题,请在管理控制台上执行以下操作
单击资源 > JDBC 提供程序。
单击 Apache Derby 提供程序
向下滚动并单击数据源。
选择数据源或添加新的数据源。
单击定制属性。
如果属性 retrieveMessagesFromServerOnGetMessage 存在,那么将它的值设置为 true。如果该属性不存在,请选择新建并添加值为 true 的属性 retrieveMessagesFromServerOnGetMessage。
重新运行客户机。
现在 SystemOut.log 将生成可读的消息,这样就可解决根本的问题。