Meldung: COLLATION UNICODE_CI for CHARACTER SET UTF8 is not installed (Linux Mint v21.1)

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Antworten
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Hallo.

Habe ein taufrisches Linux Mint v21.1:
Kernel: 5.15.0-58-generic x86_64 bits: 64 Desktop: Cinnamon 5.6.7
Distro: Linux Mint 21.1 Vera


Habe dann
:: Firebird-4.0.2.2816-0.amd64.tar.gz installiert - OK
:: auch mal testweise zur Beispiel-Datenbank employee.fdb verbunden - OK


Hatte eine Datenbanken unter Linux Mint v20.x mit Firebird v4.0.2 so erstellt:

Code: Alles auswählen

CREATE DATABASE '/home/gerd/Firebird/Datenbanken/club.fdb'
USER 'Gerd'
PASSWORD 'geheimes_passwort'
PAGE_SIZE 8192
SET NAMES 'UTF8'
DEFAULT CHARACTER SET UTF8
COLLATION UNICODE_CI;
Wichtig ist die letzte Zeile - Vorgabe der Sortierung mit "COLLATION UNICODE_CI".

Rufe ich die Datenbank unter Verwendung des Firebird ISQL Tools auf, erhalte ich nun (Linux Mint v21.1) auf einmal diese Meldung:

gerd@gerd-MS-7641:~$ isql club.fdb
Statement failed, SQLSTATE = 22021
COLLATION UNICODE_CI for CHARACTER SET UTF8 is not installed
Use CONNECT or CREATE DATABASE to specify a database
SQL>


Das hatte hier mit z.B. Linux Mint v20.x alles bestens funktioniert.

Habe im Internet gesucht und auch was gefunden, bspw. das hier:
https://www.firebirdfaq.org/faq358/
Oder auch das hier zum Thema CREATE COLLATION:
https://firebirdsql.org/refdocs/langref ... ation.html

Aber die Frage ist doch, wie kann es sein, dass nach korrekter Neuinstallation von Linux Mint v21.1 und korrekter Neuinstallation von Firebird plötzlich Sortierungen aus den Systemtabellen (RDB$CHARACTER_SETS; RDB$COLLATIONS) betroffener Datenbanken offenbar 'verschwinden' bzw. nicht mehr angesprochen werden --- keine Ahnung. :shock:

Habe übrigens nach dem gleichen CREATE DATABASE Muster (siehe oben) eine neue Datenbank erstellt.
Ich bekam dabei keine Fehlermeldung.
Jedoch beim anschießenden Aufruf der Datenbank monierte das ISQL Tools ebenso: 'COLLATION UNICODE_CI for CHARACTER SET UTF8 is not installed'.
Ein DROP DATABASE ist übrigens bei so einer Datenbank dann auch nicht möglich.

Es wäre schön, wenn jemand erklärende Hinweise dazu hätte.

Ich lasse es zukünftig sein, der Datenbank beim CREATE die Sortierung mitzugeben.
(Übrigens, IBExpert bietet in seinem CLIENT beim CREATE DATABASE ein Feld für die Eingabe der Sortierung an.)



Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Diese Libs scheinen nicht automatisch installiert zu werden.
https://icu.unicode.org/
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Hallo bfuerchau.

Also angenommen, das Linux Mint-System hat bis zur Version 20.3, diese ICUs (International Components for Unicode; ein OPEN-Source-Projekt) gleich mitinstalliert, dann wäre es doch eine Information auf dem Weg hin zur Version 21 wert gewesen, dass dem nicht mehr so ist. Und sollte Firebird 4.0.2 das bei seiner Installation nicht auch bemerken.
Mir kommt es so vor, dass ich nur in die eine Richtung denke - die könnte sich womöglich als falsch erweisen.

Vielleicht ist es ja bei mir durch den Systemwechsel (v20.3 -> v21.1) zu einer anderen Version der ICU-Bibliothek gekommen(?). Nur, was hatte ich demnach für eine Version der ICU-Bibl. unter Linux Mint v20.3(?).

Ich habe das Gefühl, dass hier ein Lösungsansatz liegt:
https://www.firebirdfaq.org/faq358/
"Dieser Fehler kann auftreten, wenn Sie versuchen, eine Datenbank, die mit einem Firebird-Server unter Verwendung einer Version der ICU-Bibliothek erstellt wurde, auf einem anderen Firebird-Server zu verwenden, der eine andere Version der ICU-Bibliothek verwendet."(sinng. übersetzt)

Der dortige Berfehl zur Abfrage der ICU-Version:

Code: Alles auswählen

dave@randoms:/opt/firebird/bin$ ldd fb_inet_server | grep icu
funktioniert hier leider nicht.

Bei mir endet das im Terminal so:

Code: Alles auswählen

gerd@gerd-MS-7641:~$ cd /opt/firebird/bin
gerd@gerd-MS-7641:/opt/firebird/bin$ ldd fb_inet_server | grep icu
ldd: ./fb_inet_server: Datei oder Verzeichnis nicht gefunden
gerd@gerd-MS-7641:/opt/firebird/bin$
Ich kenne eben das korrekte Verzeichnis nicht.


Ich brauche Unicode_CI nicht wirklich. Aber die Klärung der Frage wäre schon interessant. Kann ja sein, dass es mal unbedingt benötigt wird.


Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Benutzeravatar
martin.koeditz
Beiträge: 443
Registriert: Sa 31. Mär 2018, 14:35

Hallo Gerd,

wenn ich mich nicht irre, werden die ICU-Libs nicht von Firebird mit installiert. Das sind separate Distropakete.
Versuche mal

Code: Alles auswählen

apt install icu-devtools
Gruß
Martin
Martin Köditz
it & synergy GmbH
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Hallo Martin.

Mache ich doch sofort. Danke. Ich berichte.

Derweil habe ich nach einer Suche mit dem Dateimanager Nemo das hier gefunden:
/lib/x86_64-linux-gnu/libicuuc.so.70.1

Würde mich nicht wundern, wenn es unter Linux Mint v20.x die Datei so hieß(?):
/lib/x86_64-linux-gnu/libicuuc.so.60.1

Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Gerd hat geschrieben: Do 9. Feb 2023, 11:10 Hallo Martin.

Mache ich doch sofort. Danke. Ich berichte.
...

Viele Grüße
Gerd
Ja, das ist es Martin. Supi. :D

Nachdem ich icu-devtools so installiert habe, kann ich die Datenbank (hier: icutest.fdb) ohne die obige Meldung öffnen. Das sollte erreicht werden.

Code: Alles auswählen

gerd@gerd-MS-7641:~$ isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE '/home/gerd/Firebird/Datenbanken/icutest.fdb'
CON> USER 'sysdba'
CON> PASSWORD 'geheimes_passwort'
CON> PAGE_SIZE 8192
CON> SET NAMES 'UTF8'
CON> DEFAULT CHARACTER SET UTF8
CON> COLLATION UNICODE_CI;
SQL> commit;
SQL> SHOW DATABASE;
Database: /home/gerd/Firebird/Datenbanken/icutest.fdb
        Owner: SYSDBA                                                         
PAGE_SIZE 8192
Number of DB pages allocated = 224
Number of DB pages used = 216
Number of DB pages free = 8
Sweep interval = 20000
Forced Writes are ON
Transaction - oldest = 4
Transaction - oldest active = 5
Transaction - oldest snapshot = 5
Transaction - Next = 6
ODS = 13.0
Database not encrypted
Embedded connection
Creation date: Feb 9, 2023 10:19:56 GMT
Default Character set: UTF8 (with Default Collation UNICODE_CI)
SQL> exit;
gerd@gerd-MS-7641:~$ 
Danke.

Viele Grüße
Gerd

Aha. Jetzt ist mir bekannt, wie icu-dev von mir unbemerkt auf meinen Linux Mint- Rechner gekommen sein kann.
Wird Lazarus (zurzeit v2.2.4) installiert, dann installiert es dabei auch 'libicu-dev'.
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Antworten