Probleme beim Datenzugriff - Apache-Derby-Datenbank
Dieser Artikel enthält Tipps zur Fehlerbehebung beim Zugriff auf Apache-Derby-Datenbanken.
Welches Problem tritt beim Zugriff auf die Apache-Derby-Datenbank auf?
- Beim Zugriff auf eine Apache-Derby-Datenbank ist eine unerwartete IOException in einer SQLException aufgetreten
- Beim Zugriff auf Apache Derby löst die Operation "select for update" eine Tabellensperre und einen Deadlock aus
- Fehler "The version of the IBM Universal JDBC driver in use is not licensed for connectivity to Apache Derby databases"
- Die Ausführung einer Anwendung löst eine Laufzeitausnahme aus, die eine nicht lesbare Nachricht produziert
Beim Zugriff auf eine Apache-Derby-Datenbank ist eine unerwartete IOException in einer SQLException aufgetreten
Dieses Problem kann auftreten, da Apache-Derby-Datenbanken viele Dateien verwenden. Einige Betriebssysteme, wie z. B. die Betriebsumgebung Solaris, begrenzen die Anzahl der Dateien, die von einer Anwendung gleichzeitig geöffnet werden können. Wird mit dem Standardwert eine niedrige Zahl angegeben, wie z. B. 64, empfangen Sie möglicherweise diese Ausnahme.
Wenn Sie die Anzahl der Dateideskriptoren in Ihrem Betriebssystem konfigurieren können, können Sie den Fehler beheben, indem Sie als Wert eine hohe Zahl, z. B. 1024, angeben.
Beim Zugriff auf Apache Derby löst die Operation "select for update" eine Tabellensperre und einen Deadlock aus
Wenn eine für eine Zeile ausgeführte Operation "select for update" die gesamte Tabelle sperrt, was zu einem Deadlock führt, sind unter Umständen keine Indizes für diese Tabelle definiert. Falls keine Indizes für die Spalten definiert sind, die Sie in der Klausel where verwenden, kann Apache Derby anstelle einer Zellensperre eine Tabellensperre setzen.
Erstellen Sie zur Behebung dieses Fehlers einen Index für die betroffene Tabelle.
Fehler "The version of the IBM Universal JDBC driver in use is not licensed for connectivity to Apache Derby databases"
The version of the IBM Universal JDBC driver in use is not
licensed for connectivity to Apache Derby databases. To connect
to this DB2 server, please obtain a licensed copy of the IBM DB2
Universal Driver for JDBC and SQLJ. An appropriate license file
db2jcc_license_*.jar for this target platform must be installed to
the application classpath. Connectivity to Apache Derby databases is
enabled by any of the following license files:
{ db2jcc_license_c.jar, b2jcc_license_cu.jar, db2jcc_license_cisuz.jar }
Der Fehler tritt auf, wenn im Klassenpfad des JDBC-Providers der Name einer falschen JAR-Datei für den JDBC-Treiber angegeben ist.
Der Name der JAR-Datei könnte ein zusätzliches Unterstreichungszeichen ('_') enthalten. Beispiel: ${UNIVERSAL_JDBC_DRIVER_PATH}/db2jcc_license__cu.jar
- Korrigieren Sie den Namen der UNIVERSAL_JDBC_DRIVER_PATH-JAR-Datei im JACL-Script.
- Starten Sie den Cluster erneut.
- Führen Sie den Client erneut aus.
Die Ausführung einer Anwendung löst eine Laufzeitausnahme aus, die eine nicht lesbare Nachricht produziert
Zur Laufzeit des Clients kann eine Nachricht wie die folgende ausgegeben werden: Caused by: com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -1, SQLSTATE: 42X05, SQLERRMC: ANNUITYHOLDER20^T42X05
Dieser Fehler tritt auf, wenn die für WebSphere Application Server erforderliche Eigenschaft retrieveMessagesfromServerOnGetMessage nicht gesetzt ist.
- Klicken Sie auf .
- Klicken Sie auf einen Apache-Derby-Provider.
- Blättern Sie nach unten, und klicken Sie auf Datenquellen.
- Wählen Sie Ihre Datenquelle aus, oder fügen Sie eine neue hinzu.
- Wählen Sie Angepasste Eigenschaften aus.
- Falls die Eigenschaft retrieveMessagesFromServerOnGetMessage vorhanden ist, setzen Sie den zugehörigen Wert auf true. Sollte die Eigenschaft nicht vorhanden sein, wählen Sie Neu aus, und fügen Sie die Eigenschaft retrieveMessagesFromServerOnGetMessage mit dem Wert true hinzu.
- Führen Sie den Client erneut aus.