Kategorie:Lösungen für Fehlerfälle

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

(SQLException): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT)

Dieser Fehler tritt auf wenn die collations der Datenbank nicht richtig gesetzt sind. Aufgefallen bei openSUSE 11.4

Die Variablen müssen wie folgt gesetzt sein:

mysql> show variables like 'colla%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+

Ist dies nicht der Fall können die fehlerhaften Setzungen wie folgt korrigiert werden:

collation_connection

MySql-Client verwendet die falsche collation. In /etc/my.cnf

[client]
...
default-character-set= utf8

setzen

collation_database

Datenbank verwendet falsche collation. In MySQL-Konsole:

mysql> ALTER DATABASE [database] COLLATE utf8_general_ci;


collation_server

MySql-Server verwendet falsche collation. In /etc/my.cnf

[mysqld]
...
default-character-set= utf8
default-collation = utf8_general_ci


Sollte der Fehler immer noch nicht behoben sein, können die collations der Tabellen noch geprüft werden:

mysql> show table status;

connection invalid No ManagedConnections available within configured blocking timeout

In der MySQL Konfiguration sind möglicherweise Connection Timeouts konfiguriert. Diese müssen deaktiviert werden.

# Connection timeout
#connect_timeout                   = 60

# Timeout for inactive connections
#wait_timeout                      = 60


Bilder können nicht berechnet werden

  • Fehlermeldung im ies.out: Out of Memory
Die Bilder mit dem ImageMagick Kommando convert über einen System-Call Aufruf es IES-Prozesses berechnet. Linux prüft, bevor der Kind-Prozess erzeugt wird, ob genügend freier Arbeistspeicher vorhanden ist um den Prozess zu starten. Hierbei ist der verwendete Arbeitsspeicher des Elternprozesses entscheidend. Auch wenn der Kind-Prozess selber den Speicher nicht benötigt wird diese Überprüfung vorgenommen. Um diese Problem zu lösen, gibt es zwei Lösungsvorschläge
  1. Java 7 verwenden.
  2. Vergrößerung des Swap-Bereiches auf einen Wert der ausreicht, um freien Arbeitsspeicher in Höhe des verwendeten Speicher des IES-Prozesses bereit zu stellen (z.B. 1 bis 2 fache des vorhanden RAM)
  3. Parameter vm.overcommit_memory (http://www.linuxinsight.com/proc_sys_vm_overcommit_memory.html)
Mit folgendem Kommando können sie den Parameter ohne Neustart setzten:
sysctl -w vm.overcommit_memory=1
Damit auch nach einem Neustart des Servers der Wert wieder gesetzt wird, müsste auch noch folgender Eintrag in der Datei /etc/sysctl.conf eingetragen werden:
vm.overcommit_memory=1

Kommentar:

Nun zum Problem. Es wird Java 1.6 verwendet. Der IES für Bildberechnung und andere Prozesse über sog. Runtime.exec()-Aufrufe aus und lässt
die eigentlichen Prozesse in anderen Programmen ausführen. Für die Bildberechnung ist dies z.B. imagemagick.
Nun ist es aber so, dass die älteren JVMs für den Aufruf eines Prozesses einen fork()-Aufruf absetzen. Und für diesen wird der Speicher des aktuellen Prozesses
erwartet. (Ursprünglich würde er sogar kopiert werden).
Und das schlägt in Wuppertal schief. Der neue Prozess für den ImageMagick Aufruf müsste mind. den minimal zugewiesen Speicher der JVM bekommen.
Und dieser ist aufgrund der geringen SWAP-Partition nicht verfügbar. Die Bildberechung erfolgt daher nicht und es wird ein "cannot allocate memory" geworfen.

Zwingt man nun das Betriebssystem diese Prüfung auf freien Speicher zu unterlassen (was in diesem Fall ja auch richtig ist, da wir niemals den fork() des IES benötigen)
kann die Bildberechnung korrekt ausgeführt werden (/proc/sys/vm/overcommit_memory).
Das hat aber globale Auswirkungen. Daher habe ich das wieder zurückgesetzt. Nach Aussage einzelner Personen müsste es genügen den MIN_MEM Wert des Java-Prozesses
zu reduzieren. Das werden wir nun einmal versuchen, auch wenn der IES selber dann beim Start öfter neuen Speicher allozieren muss...

Diese Kategorie enthält zurzeit keine Seiten oder Medien.