Januar 2010:
101 - Endlich mal das mysql Collate "normalisieren"
Auf die Frage, wo denn der Unterschied zwischen
"utf8_general_ci" und "utf8_unicode_ci" sei, bekam ich von Moreno Feltscher folgende Antwort:
Google wäre dein Freund gewesen: http://dev.mysql.com/doc/refman/5.1/de/charset-unicode-sets.html
Dort findet man irgendwo ganz unten im Text, daß "utf8_general_ci" die schnellere (dafür weniger korrekte) Sortiermethode ist. Außer daß es sowieso der neue Standard von mysql und Typo3 ist, ist bei vielen Domains ein historisch gewachsenes Collate- Wirrwar eigentlich tödlich.
102 - Warum man doch das Collate auf utf8 umbauen sollte
Die Wellen schlugen hoch bei den "Experten", als das "Warum" in der Newsliste angesprochen wurde und Manche "Experten" meinten - bloß die Finger davon lassen.
Doch so einfach ist das nicht. Wir hatten aus langer Historie dieses "latin1_swedish_ci" über Jahre und es hatte (bei uns) hervorragend funktioniert. Außerdem hatten wir nur MyISAM als Indexmaschine. Später kam mit neueren mysql Versionen InnoDB dazu und wurde sogleich mit "utf8_unicode_ci" eingerichtet. Das funktionierte leidlich, bis wir die indexed_search Suchmaschine ausprobiert hatten.
Dort tauchten in den Content Headern bei den indexed_search Fundstellen (Treffern) "sonderbare" Sonderzeichen auf. Da die Such-Geschwindigkeit von "indexed_search" aber nicht überzeugte, haben wir alles deinstalliert und uns auf die hochgelobte "mnogosearch" gestürzt. Dort war der Mischmasch ebenfalls eklatant und der Autor Dmitry riet zu einem "sauberen" Umgang mit einem (1) !! universellen Zeichensatz.
Die Quintessenz: Das Ganze macht wirklich Sinn.
.
So habe ich angefangen, meine beiden großen Webs umzubauen. Hier steht, wie ich es gmacht habe:
105 - Jan. 2010 - Eine Muster-Umstellung als Beispiel :
Korrigieren der Kollation von "latin1" auf "utf8_general" bedeute bei mir das Duplizieren der Datenbank "fernsehmuseum_info" nach "fernsehmuseum_2010".
Dazu ist der Shellzugriff mit putty erforderlich !!
108 - Die alte Datenbank auslesen ="dumpen":
Versuch 1: (so steht es im Handbuch)
(mysqldump -u"user" -p"passw" -hlocalhost --add-drop-table fernsehmuseum_info > /tmp/femuwi-info.sql)
erstes bescheidenes Ergebnis :
-rw-r--r-- 1 root root 23.582.355 9. Jan 21:21 femuwi-info.sql
Darum die Korrektur = Versuch 2:
Ich nehme aber die verbesserte Exportversion ohne !!!! Zeichensatzinfo (weil ich bereits mysql 4.0 habe oder höher !!) :
Die Kommandozeile (mit der --compatible Option) sieht jetzt so aus:
mysqldump -u"user" -p"passw" -hlocalhost --add-drop-table fernsehmuseum_info --compatible=mysql40 > /tmp/femuwi-info-neutral-utf.sql
das verbesserte Ergebnis:
-rw-r--r-- 1 root root 25507117 9. Jan 21:26 femuwi-info-neutral-utf.sql
und jetzt mit "joe" oder "less" (bei uns -damals- unter Suse 11.1) überprüft, daß im gesamten SQL-Text kein komischer "latin1" String mehr gefunden wird!! Also ist dieser 2. Export File neutral und enthält alle unsere "äöüÄÖÜß" usw.
.
110 - Diesen Dump in neue "leere" !! Datenbank einlesen:
Soll der Import (wieder) in die bereits vorhandene Datenbank auf dem gleichen Server stattfinden, dann mit phpmyadmin alle Tabellen komplett !!! löschen. Wir haben ja beim Export die Tabellenstruktur mit ausgegeben. Mit dieser Kommandozeile (unten) werden die neuen Tabellen gleich richtig angelegt und auch richtig gefüllt.
mysql -u"user" -p"passw" -hlocalhost fernsehmuseum_2010 < /tmp/femuwi-info-neutral-utf.sql
Und gleich mit dem phpmyadmin prüfen, ob die Umlaute korrekt angezeigt werden. Das ist natürlich nur der erste Grundtest, daß es überhaupt funktioniert hat. - Bei uns stimmt es. Das reicht (uns) aber nicht !!!!!! Also aufpassen und im Typo3 Frontend ausgiebig überprüfen.
116 - jetzt noch 2 Ergänzungen von Hand in localconf.php
oder mit dem Install-Tool im Backend, das geht auch, ist aber für uns zu aufwendig.
forceCHarset = utf-8;
und
SetDBinit = Set NAMES utf8;
(hier immer das Semicolon am Ende der Zeile nicht vergessen !!)
So, es hat funktioniert mit ca. 1100 Seiten und 5600 Contentementen.
120 - Stolperfallen an allen Ecken
Auf der Homepage sind die Bilder weg und das Layout ist "zerrupft". Was ist das nun schon wieder ?
Es können in den html Templates vormalige Umlaute (sogar in den Kommentarzeilen !!! ) als "?" angezeigt werden und schon sind es keine Kommentare mehr und die Seite ist zerrupft wenn nicht sogar unsichtbar. - So war es bei mir.
Gehen Sie also Ihre html Templates in Ihrem Template Verzeichnis durch (bei uns wohnen die html Templates in fileadmin/templates/.
Da waren wirklich mehrere ehemalige deutsche Umlaute durch Fragezeichen substituiert und machten nur Ärger.
124 - der finale Test mit dem mnogo Indexer
Jetzt muß der mnogoserch Indexer nochmal laufen, bei uns werden mit phpmydamin alle Tabellen in der mnogosearch Datenbank geleert oder gelöscht, die Kollation muß auch auf utf8 kontrolliert bzw. korrigiert werden
und dann auf der Linux Commandozeile als user root
/usr/bin/php5 -q /vol2/www/www.fernsehmuseum.info/typo3/cli_dispatch.phpsh mnogosearch -v 3 -w
laufen lassen.
Es funktioniert.
www.fernsehmuseum.info/die-schnelle-suchseite.html
Hier jedenfalls geht es super. Suchen Sie mal nach "mühsam" - wegen des Umlautes, es funktioniert toll.
130 - Gelerntes auf Web Nummer 2 anwenden
jetzt also Projekt Nummer 2 nach gleichem Schema umformen:
auslesen collate-neutral !!
mysqldump -u"user" -p"passw" -hlocalhost --add-drop-table datenbankname --compatible=mysql40 > /tmp/dateiname-utf.sql
neue "Shadow"-Datenbank anlegen , dann Rechte zuweisen,
dann importieren
mysql -u"user" -p"passw" -hlocalhost abcdefg < /tmp/dateiname-utf.sql
Es hatte funktioniert diesmal mit 1500 Seiten und 8500 Contenelementen
Dann die Tabellen in der mngosearch Datenbank leeren oder löschen. Die Kollation korrigieren
und dann
/usr/bin/php5 -q /vol2/www/www.useddlt.com/typo3/cli_dispatch.phpsh mnogosearch -v 3 -w
und warten und dann probieren.
134 - Probleme mit dem cag_pagebrowser
WICHTIG: in der cag_cagebrowser extension bei den statics im file constants (auch) die (ehemaligen) Umlaute reparieren (bei uns sind solche Schlüssel-Extensions immer global installiert).
und
im localconf.php diese Zeile wieder auskommentieren :
### $TYPO3_CONF_VARS['SYS']['UTF8filesystem'] = '1';
sonst geht der Pagebrowser nicht. Alles andere hatte dann funktioniert.