unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..)

casi91

Bekanntes Mitglied
Hallo liebe Community.
Ich habe gerade eher Zufällig ein kleines Problem gehabt, welches ich zwar beheben konnte, mir aber unverständlich ist, warum es zuvor zu einem Fehler kam.

Kurz zur Anmerkung.
Ich arbeite mit Hibernate und Annotaitions
und mit einer DB2 Datenbank

Nun das "Phänomen"
In meinem Programm hat sich irgendwann folgende SQL abfrage zusammengesetzt:
Java:
Select * from Tabelle where ID between 4711 and 4711
Bei dieser Abfrage bekam ich dann folgenden Fehler:
Java:
[IBM][CLI Driver][DB2/NT] SQL1585N  Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden Seitengröße vorhanden.  sqlstate=54048

Wenn ich nun die Abfrage (wie es auch logischer ist) umstelle zu:
Java:
Select * from Tabelle where ID = 4711
kommt dieser Fehler nicht und alles ist in Butter.

Bei einer anderen Abfrage wie:
Java:
Select * from Tabelle where ID between 4710 and 4719
taucht kein Fehler auf.

(bitte nicht mit mir über den Sinn oder Unsinn bestimmter SQL-Abfragen diskutieren, habe es ja geändert, mir gehts nur um den Fehler und darum, dass ich nicht verstehe warum dieser dann auftritt)

Danke schonmal im Vorraus =)
 

x22

Bekanntes Mitglied
Weil du in deinem Code:

SQL:
Select * from Tabelle where ID between 4711 and 4711


bei der Abfrage between nicht dieselbe ID stehen haben darfst.
 

California

Aktives Mitglied
@x22:
mit allem gebotenen Respekt, das ist Bullshit.
Ich hab's auf unserer AS getestet, und sie zeigt ganz klar den einen zutreffenden Satz an. Was sie nicht mag (die IBM DB2/400 auf der iSeries (oder AS400)), ist eine BETWEEN- Klausel, bei der das erste Argument größer ist als das zweite
(Also
SQL:
SELECT * FROM Tabelle WHERE ID BETWEEN 4712 AND 4711
).
Hier kommt aber nur eine leere Menge zurück, und kein Fehler. Andere Datenbanken verhalten sich da kommutativ und geben dieselbe Ergebnismenge wie bei wertmäßig steigenden Argumenten zurück. Was da jetzt richtig oder falsch ist, ist wohl eine philosophische Frage. Blöd ist nur, dass sich wieder mal nicht alle DBs gleich verhalten. IMHO ist aber 8 genauso zwischen 5 und 10 wie zwischen 10 und 5...
Zurück zum Problem: Google mal den SQL- Fehler (SQL1585N), anscheinend kannst Du an ein paar Parametern drehen...
Und eine BETWEEN- AND- Abfrage mit gleichen Argumenten ist durchaus sinnvoll, wenn Du z.B. von- bis Lieferschein oder Kundennummer oder mit derselben Logik halt nur nach einem suchen willst. Also
Java:
if (StringUtils.isBlank( bis )) {
    bis = von;
} // hier Abfrage
schreibt sich halt viel schneller als
Java:
if (StringUtils.isBlank( bis )) {
    // Abfrage nach einem Wert
} else {
    // Abfrage mit von- bis
}
Abgesehen davon, dass Du im zweiten Fall immer zwei Abfragen warten musst (redundanter Code!)

Geschätze 2/3 unserer ERP- Abfragen (zeige Auftrag / Lieferschein / xxx mit Datum usw. zwischen / und oder mit einem Wert) würden nicht funktionieren, wenn man bei BETWEEN AND keine gleichen Werte angeben dürfte. Die sind nämlich alle nach dem ersten Schema implementiert. Und es ist ein Glücksfall, dass menschliche Benutzer instinktiv (= zwanghaft) immer steigende Werte eingeben...
 
Zuletzt bearbeitet:

casi91

Bekanntes Mitglied
@California

Danke für deine ausführliche Antwort.
Damit der Fehler derzeit nicht auftaucht, habe ich den von dir geschriebenen (unsauberen) code auch schon verwendet.
Bedeutet ich frage derzeit via "if-then-else" ab und führe dann ein "between" oder ein "equal" aus.

Das sich nicht alle DB's gleich verhalten stimmt.
Ich habe gerade gesehen, dass ich vergessen habe etwas dazu zu schreiben.
(müsste es nun wieder testen aber)
wenn ich die DB2-Datenbank auf der AS/400 laufen habe und die Abfrage mache, bekomme ich kein Problem.
Habe ich die DB2 (wie es derzeit aus Testgründen der Fall ist) lokal, bekomme ich dieses Problem.

Ich werde bei Gelegenheit den SQL-Fehler mal Googlen und schauen was sich machen lässt.

Ich werde meinen Code nun vorerst mal mit dem "if"-woraround belassen, damit meine Abfragen funktionieren. Mich aber bei Gelegenheit weiter mit diesem Problem auseinandersetzen.
(Denn meines Erachtens nach, sollte eine "between 1 and 1" auch funktionieren)
 

x22

Bekanntes Mitglied
Bei meinem Test wird die Between Klausel mit zwei gleichen Werten nicht compiled.
Aber wenn das Problem anders gelöst wurde, ist ja gut.
Freundlicher könnte man es dennoch ausdrücken.
 

California

Aktives Mitglied
Bei meinem Test wird die Between Klausel mit zwei gleichen Werten nicht compiled.
Aber wenn das Problem anders gelöst wurde, ist ja gut.
Freundlicher könnte man es dennoch ausdrücken.

Sorry, war vielleicht etwas schnodderig ;-)
Ändert nichts daran, dass die Ansage, die Werte bei BETWEEN- AND- dürfen nicht gleich sein, nicht stimmt, zumindest für SQL.
Da darf der Server oder die Verbindung nicht abschmieren.
Solange die Werte typkompatibel sind, darf auch keine Fehlermeldung kommen, sondern eine leere Ergebnismenge, wenn nichts gefunden wird.
Habe auch mal nachgelesen, im Standard ist BETWEEN- AND- anscheinend nicht kommutativ für die Argumente, die sollen ansteigend sein, das finde ich aber unlogisch. Naja, ist einfacher zu implementieren..

Was meinst Du mit "Im meinem Test nicht compiled" ? Wo kompilierst Du das SQL- Statement?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
C Problem mit Apache Poi Datenbankprogrammierung 6
N HSQLDB Problem mit Eclipselink in runnable Jar Datenbankprogrammierung 10
P GroupLayout-Problem Datenbankprogrammierung 12
F XAMPP max connections problem Datenbankprogrammierung 6
C MySQL Problem in phpMyAdmin Oberfläche Datenbankprogrammierung 5
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
C Problem with insertion in database. Datenbankprogrammierung 7
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
A kleines Problem Datenbankprogrammierung 6
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
V Derby/JavaDB updateRow Problem Datenbankprogrammierung 0
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
Nuiton EmbeddedDriver Problem Datenbankprogrammierung 6
A MongoDB Passwort Problem Datenbankprogrammierung 0
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
F MySQL JDBC Problem Datenbankprogrammierung 5
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
M Derby/JavaDB NOT LIKE problem Datenbankprogrammierung 19
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
B MySQL JPAContainer Problem Datenbankprogrammierung 4
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
M Problem mit jcouchdb und CouchDB - UTF8 kein gültiger Zeichentyp Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P SQL Query Problem Datenbankprogrammierung 14
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
B SQLite Problem bei Planung der Datenbank [Jeopardy] Datenbankprogrammierung 3
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
P Oracle Problem mit Umlauten Datenbankprogrammierung 9
A Problem mit Create-Statement Datenbankprogrammierung 9
D Problem mit COLUMN_IDENTIFIERS Datenbankprogrammierung 8
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
M Problem mit mehreren Datasourcen Datenbankprogrammierung 3
R Resultset.last() Problem Datenbankprogrammierung 12
M Problem GroupBy Datenbankprogrammierung 3
S CURRENT_DATE problem Datenbankprogrammierung 2
M Problem mt JPA Id-Generators Datenbankprogrammierung 18
Gossi Oracle Problem mit group by... Datenbankprogrammierung 22
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
R MS-SQL Express Login-Problem Datenbankprogrammierung 8
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
K Db4o Delete Problem Datenbankprogrammierung 11
Mike90 Deadlock/Lock Problem Datenbankprogrammierung 4
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
J Problem bei Boolean in PreparedStatement Datenbankprogrammierung 5
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
S Oracle Problem mit PreparedStatement.setString(1,"str") Datenbankprogrammierung 10
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Property-Problem Datenbankprogrammierung 5
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
M Problem mit JPA - OneToMany-Relation Datenbankprogrammierung 3
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
S JPA OptimisticLocking Problem Datenbankprogrammierung 11
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
I Problem mit ResultSet Datenbankprogrammierung 2
L Excel in MySQL importieren Problem Datenbankprogrammierung 5
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
T Problem beim schreiben von daten Datenbankprogrammierung 4
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
K Hibernate + MySQL Problem... Datenbankprogrammierung 2
I MySQL MySQL – Proxy Problem Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
M Problem mit Hibernate und Access Datenbankprogrammierung 9
C firebird problem Datenbankprogrammierung 5
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
K SQL Problem mit Date Datenbankprogrammierung 3
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G MySQL Connection Problem Datenbankprogrammierung 3
O MySQL Problem mit Umlauten?! Datenbankprogrammierung 2
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
M Oracle Problem mit Resultset Datenbankprogrammierung 11
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
W jpmdbc Problem -Beispiel funktioniert nicht Datenbankprogrammierung 9
W Verständnis-Problem JPA Grundlagen Datenbankprogrammierung 5
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5
M JPA-Persist Problem Datenbankprogrammierung 2
7 Problem mit Hibernatekonfiguration Datenbankprogrammierung 13

Ähnliche Java Themen

Neue Themen


Oben