Sortierung von Umlauten, MySQL 5.7, COLLATE, jdbc

Hier melden JVerein-Benutzer ihre Fehler

Moderator: heiner

Antworten
vof
Beiträge: 12
Registriert: Freitag 8. April 2022, 10:52
Verein: Behindertensportgemeinschaft Mönchengladbach e. V.
Mitglieder: 120
JVerein-Version: 2.8.18 20190623 b521 db 417
Betriebssystem: Win10 MySQL

Sortierung von Umlauten, MySQL 5.7, COLLATE, jdbc

Beitrag von vof »

Hallo miteinander!

Ich habe eine Frage zur Änderung der Sortierung bei der Anzeige von Mitgliedern in einem Formular.

Ich habe ein Formular erstellt, das Mitgliedernamen und andere Daten auflistet. Die Daten für die Anzeige sind das Ergebnisse von Datenbankabfragen, die in Lesefeldern stattfinden und als Formularfelder eingebunden werden.

In der Ergebnisliste werden die Umlaute ä, ö, ü nicht wie erwartet sortiert. Die Namen mit Umlauten werden also wie

Name
=====
Bad
Bae
Baf
Bäd

sortiert. Der relevante Code im Lesefeld ist

Code: Alles auswählen

	DBIterator itm = Einstellungen.getDBService().createList( Mitglied.class );
	itm.addFilter( " ( austritt IS NULL OR austritt >= ? ) ", new Object[] { new java.sql.Date( System.currentTimeMillis() ) } );
	itm.join( " adresstyp " );
// ... noch mehrere filter, joins und limit
	itm.setOrder( " ORDER BY name, vorname COLLATE latin1_german2_ci" );
Die COLLATE-Anweisung ändert das Ergebnis nicht.

Der Server (MySQL 5.7) hat die Systemvariablen (laut MySQL Workbench 8.0)
collation_connection, collation_database und collation_server
alle auf
latin1_swedish_ci stehen.

Die jdbc-Anweisung unter "C:\Program Files\jameica\cfg" (alles Windowsclients) heißt:

Code: Alles auswählen

database.driver.mysql.jdbcurl=jdbc\:mysql\://127.0.0.1\:3306/jverein?useUnicode\=Yes&characterEncoding\=ISO8859_1
Mir ist auch nach der Internetsuche nicht klar, an welcher Schraube ich drehen muß, um die Telephonbuchsortierung einzuschalten. Oder muß ich die Tabellen in der Datenbank alle auf die andere Collation umstellen?

Vielen Dank für Eure Hinweise
GV
Benutzeravatar
hibiscus
Beiträge: 138
Registriert: Donnerstag 31. Mai 2018, 08:55

Re: Sortierung von Umlauten, MySQL 5.7, COLLATE, jdbc

Beitrag von hibiscus »

Die Tabellen sollten auf jeden Fall alle mit der collation angelegt worden sein. Kannst du das nicht testweice mal für die Tabelle machen?

PS: Das "COLLATE latin1_german2_ci" direkt im SQL-Query halte ich für keine gute Idee. Das ist recht mysql-spezifisch.
vof
Beiträge: 12
Registriert: Freitag 8. April 2022, 10:52
Verein: Behindertensportgemeinschaft Mönchengladbach e. V.
Mitglieder: 120
JVerein-Version: 2.8.18 20190623 b521 db 417
Betriebssystem: Win10 MySQL

Re: Sortierung von Umlauten, MySQL 5.7, COLLATE, jdbc

Beitrag von vof »

Ich hab mit der MySQL Workbench für die Spalte 'name' der Tabelle 'mitglied' die Spaltencollation auf latin1_german2_ci gesetzt und dann klappte die Sortierung. :)

Für die SQL-Anweisung siehe https://dev.mysql.com/doc/refman/5.7/en ... table.html


Danke!
GV
Antworten