Problemas de acceso a datos para bases de datos Apache Derby
Utilice las sugerencias de resolución de problemas como ayuda para acceder a las bases de datos Apache Derby.
¿Qué problema tiene cuando accede a la base de datos Apache Derby?
- Se ha producido una excepción IOException derivada en SQLException al acceder a la base de datos Apache Derby.
- Al ejecutar la operación "select for update", se crea un bloqueo de tabla y un punto muerto cuando se accede a Apache Derby
- Error "La versión del controlador IBM Universal JDBC que se está utilizando no tiene licencia de conectividad con bases de datos Apache Derby"
- Si se ejecuta una aplicación, se produce una excepción de tiempo de ejecución que produce un mensaje ilegible
Se ha producido una excepción IOException derivada en SQLException al acceder a la base de datos Apache Derby.
Este problema se puede producir debido a que las bases de datos Apache Derby utilizan muchos archivos. Algunos sistemas operativos como, por ejemplo, el entorno operativo Solaris, limitan el número de archivos que puede abrir una aplicación cada vez. Si el número predeterminado es un número bajo como, por ejemplo, 64, es posible que reciba esta excepción.
Si puede configurar el número de descriptores de archivo en su sistema operativo, puede corregir el problema estableciendo el número en un valor alto, como por ejemplo 1024.
Al ejecutar la operación "select for update", se crea un bloqueo de tabla y un punto muerto cuando se accede a Apache Derby
Si una operación select for update en una fila bloquea toda la tabla, y crea un punto muerto, puede que hayan índices no definidos en esa tabla. Si falta un índice en las columnas que se utilizan en la cláusula where, Apache Derby puede crear un bloqueo de tabla en lugar de un bloqueo a nivel de fila.
Para resolver este problema, cree un índice en la tabla afectada.
Error "La versión del controlador IBM Universal JDBC que se está utilizando no tiene licencia de conectividad con bases de datos Apache Derby"
La versión del controlador IBM Universal JDBC que
se está utilizando no
tiene licencia de conectividad con bases de datos
Apache Derby. Para conectarse
a este servidor DB2, obtenga una copia con licencia del controlador IBM DB2
Universal Driver para JDBC y SQLJ. El archivo de licencia correspondiente
db2jcc_license_*.jar de esta plataforma de destino debe estar instalado en la
classpath de la aplicación. La conectividad con las bases de datos Apache Derby está
habilitada por cualquiera de los siguientes archivos de licencia:
{ db2jcc_license_c.jar, b2jcc_license_cu.jar, db2jcc_license_cisuz.jar }
El problema se produce porque se especifica un nombre incorrecto de archivo
Java™ (JAR) de
controlador JDBC en la classpath del proveedor de JDBC. Por ejemplo, el nombre de
archivo JAR podría tener un '_' adicional: ${UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license__cu.jar
- Corrija el nombre de archivo JAR UNIVERSAL_JDBC_DRIVER_PATH JAR en el script JACL.
- Reinicie el clúster.
- Vuelva a ejecutar el cliente.
Si se ejecuta una aplicación, se produce una excepción de tiempo de ejecución que produce un mensaje ilegible
Durante el tiempo de ejecución del cliente, puede recibir un mensaje parecido al siguiente: Caused by: com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -1, SQLSTATE: 42X05, SQLERRMC: ANNUITYHOLDER20^T42X05
El problema se produce porque no se ha establecido la propiedad retrieveMessagesfromServerOnGetMessage, que necesita WebSphere Application Server.
- Pulse .
- Pulse un proveedor de Apache Derby.
- Desplácese hacia abajo y pulse Orígenes de datos.
- Seleccione el origen de datos o añada uno nuevo.
- Seleccione Propiedades personalizadas.
- Si la propiedad retrieveMessagesFromServerOnGetMessage existe, establezca su valor en true. Si la propiedad no existe, seleccione Nuevo y añada la propiedad retrieveMessagesFromServerOnGetMessage con un valor true.
- Vuelva a ejecutar el cliente.