Weblog Kommentare
Fehlende utf8mb4-Emojis nach Hosting-Migration
Ian Styx am |
Nur zur Klarstellung:
Die jetzt fehlenden bzw durch ? platzierten Emojis beziehen ihre Daten aus dem stark erweiterten Unicode Raum.
Das Sternenglitzer ✨ aber und zb auch das irische Kleeblatt ☘ befnden sich schon im einfach erweiterten Unicode Raum. An diese Räume wird noch heute fortwährend angedockt, deswegen auch gibt es so viele unterschiedliche Unicode Implementierungen. Die ;-( Ersetzungen sind keine Emojis im eigentlichen Sinne, sondern Emoticons, bestimmte Zeichenfolgen aus ASCII-Zeichen, die mit kleinen vorgefertigte Bildchen durch eine runtime regex ersetzt werden.
Meine Verständnis dieser (unvollständigen) Migration war eben, dass der Datenbank Dump zur Migration durch deinen Hoster keinen vollständigen Unicode Satz benutzt hat. Wenn die alte Datenbank auf dem alten Server nicht mehr original vorliegt ist da wohl auch nichts mehr zu machen und all unsere schönen Mimiken sind perdu!
Beat Post author am |
Dann stellt sich mir die Frage, was ich denn nun lieber will:
Falls ein 29.04.-Backup vorliegt, dass dieser eingespielt wird und wir dadurch alles verlieren, was wir hier danach geschrieben haben (2 Artikel und 36 Kommentare)
oder so lassen und daraus lernen, dass bei einer angekündigten Servermigration von meiner Seite aus ein DB-Backup gemacht werden muss, den ich gegebenenfalls nach der Migration selbst wieder einspielen kann.
Ian Styx am |
Beides! Lernen und vervollständigen. Denn das neue seit ein paar Tagen ließe sich durch ein schnelles Backup sicherlich retten und aufgepropft zurückspielen,
Falls ein 29.04.-Backup vorliegt,
Das sollte es auch gar nicht sein, denn ein Backup wäre ja auch schon irgendwie gezogen, mit der Unsicherheit das der ganze Salat sich wiederholt. Es müsste sozusagen deine alte DB auf dem alten Server sein. damit man von dort mit dem richtigen Tool (*) eine korrekten Dump erstellen kann.
(*) PhpMyAdmin kann das, siehe beispielhaft
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
Das mit dem "notwendigen" Backup ist ein Erfahrungswert, der wohl jetzt erst beginnt vemehrt Daten zu liefern. Schaffen es Hoster darauf professionell Rücksicht zu nehmen ohne das man es ihnen extra sagen muss. Wir wissen ja zB auch nicht ob es tatsächlich ein Dump war. Vielleicht spielen da Dateisysteme und Ähnliches auch noch eine Rolle, bzw irgendwelche Zwischenablagen, angemessene Dateiformate, Editoren, etc..
Ian Styx am |
Nanu ????
Styx 3.4-alpha2 und PHP 8.0.3
Beat Post author am |
Ups.
Habe mir die neue Serverkonfiguration angesehen und festgestellt, dass ich nun hier (dokumenzi/hosttech) PHP 8.0.3 nutzen könnte. Habe das auch kurz ausprobiert, doch dann hagelt es Fehler wie z.B.
- In der rechten Seitenleiste wird nur noch Fehlercode angezeigt.
- Der CKEditor wird für Kommentare nicht mehr geladen.
- Kommentare können nicht mehr gespeichert werden -> Error-Page
- Wenn ich eingeloggt bin und in einem anderen Fenster den Blog betrachte, sehe ich mehrere Fehlermeldungen oben am Bildschirmrand.
Bin deshalb zurück auf PHP 7.4.16. Wenn es Dir hilft, kann ich PHP 8.0.3 wieder aktivieren. Wir können die Fehlerdiskussion dann im neuen Styx-Forum führen ?.
Ian Styx am |
Das ist nicht wirklich möglich - hagelnde Fehler wären dann auch schon bei 8.0.0 und 8.0.1 aufgetreten. Das sind nur Minor PHP 8 Versionen die Bugs fixen. Ich bin schon seit 2 Monaten auf PHP 8.0.3 und gerade eben auf 8.0.5 umgestiegen. Und ich finde nur noch sehr vereinzelt irgendwelche warnings, geschweige denn Fehler.
Es wäre also gut wenn du das noch mal anstellst und ich mir das ansehen kann. Und gerne auch hier behandeln, denn das mit den neuen Styx discussions betrifft dich gar nicht, so du doch eine so schicke Testinstallation hast.
Ich nehme mal an es hätte einfach einen ordentlichen Seitenreload gebraucht.
Beat Post author am |
O.K. Stelle wieder auf PHP 8.0.3 um.
Ian Styx am |
Doch wahrscheinlich hängt das (auch?) mit dem Nginx Proxy zusammen, der müsste dann mit der neuen Konfiguration ersteinmal vollständig durchgeladen werden.
Ian Styx am |
Das erste oben ist die Geschichte mit dem ($matches[1] ?? '') in der functions routing,inc .du erinnerst dich?!
Wahrscheinlich jetzt die 2. Instanz davon in Zeile 306, während wir vor Wochen die erste Instanz in Zeile 260 behandelt hatten.
Das zweite ist merkwürdig. Das "Servenden" maunzt, dass es eine bestimmte PHP Funktion nicht gäbe. Das kann aber irgendwie nicht sein, denn sie ist weder deprecated noch unfunktional per bug oder so, soweit ich auf die Schnelle sehen konnte.
Probiere mal das history dat file zu löschen. Vielleicht hilft das schon.
Ich sehe gerade dass es sich um den cache der sidebar Bilder handelt. Also bitte den mal löschen. (Ich habe solange die Rotate image time von 5 auf 0 gesetzt.)
Beat-Admin am |
In eingeloggtem Zustand kann ich nicht in einem zweiten Fenster kommentieren. Ich erhalte die Error-Page mit folgendem Hinweis:
Warning: Undefined array key "phone" in /plugins/serendipity_event_spamblock_bee/serendipity_event_spamblock_bee.php: 411.
Administrative Login Error Warning only - not seen by visitors! Send us a note what happened where and when, please.
Beat Post author am |
wie gewünscht (aus der Hosttech-DB):
Ian Styx am |
Also ist die Struktur auf Hosttech ok. PHPMyAdmin bildet ja nur ab, was ist. Ist die comments Tabelle aus dem dump vor der Migration oder so wie sie jetzt ist?
Warum also ist ein Dump, der dann soweit OK aussieht, auf der neuen Dokumenzi DB falsch bezüglich der 4-Byte Zeichen, der Emojis? (Siehe Kästchenfrage in Notepad++)
Um das dokumenzi Problem zu lösen, musst du also den zur Verfügung gestellten Dump untersuchen und punktuell vergleichen mit der Struktur die jetzt als DB vorliegt (ohne dump). Denn das ist ja das, was sie bzw. nachfolgend du drauf gekippt haben. Ist der Dump soweit ok kann eigentlich auch nichts dergleichen geschehen. Sind die Tabellen gelöscht worden bevor der dump darauf entladen wurde? Irritierend finde ich auch, dass es sich als MariaDB 10.2.37 ausgibt. Das ist so ähnlich wie die openssl Versions Geschichte und passt überhaupt nicht zu einer Server-UPGRADE-Migration mit der sie ja schon soooowoesooooo schon lange gewartet haben. Zu erwarten wäre Minimum 10.3 wenn nicht schon .4 oder .5, da schon das sehr konservative Debian stable auf 10.3.x ist. Das dahinter jemand zurückfällt fällt mir schwer nachzuvollziehen. 🙄
Zum Zweiten:
Warum fehlen Manitu (was ja ursprünglich mit deinem dokumenzi Migrations Problem nichts zu tun hat) die COLLATE utf8mb4_unicode_ci Auszeichnungen?!?
In PHPMyAdmin kannst du ja jeden table auch als Struktur ansehen, dort siehts du es so wie es nachher auch im Dump zu finden wäre. Wenn dort nichts dergleichen steht, fehlen sie. Außerdem muß man den Dump als utf8 abgespeichert ziehen (aber das sollte eigentlich schon automatisch gesetzt sein).
Es geht doch um den Dump vom hosttech Server. Siehst du in ihm die oben angemerkten Kästchen (unter Notepad++) wo die Emojis stehen??
Check mal die Mainitu Struktur. Ist sie tatsächlich so wie es der dump screenshot bezüglich der Kollationen aussagt?
Wenn du das bestätigst, ist desweiteren die Frage wie das denn sein kann. Wie genau ist diese Datenstruktur dort bei Manitu entstanden? War es eine Kopie einer alten von Anno Domini von hosttech? Ein Mischmasch, zwischen neu installierter Struktur und alten Daten? etc.?
Beat Post author am |
Das waren zuviele Fragen zu einem zu komplexen Thema 😔.
Nein. Ausser dem Fragezeichen ist da nichts. Wenn ich nun z.B. den drittletzten Kommentar (c7914) ansehe, sehe ich in Notepad++ nur das:
Als Vergleich dazu ein Kommentar aus der Manitu-DB (www.beatsblog.ch):
However. Im Moment sieht es so aus, als ob ich bei jedem hosttech-DB-Export und Re-Import sämtliche Emojis verliere.
Laienmässig sage ich, dass ich ein Problem zwischen Styx und der Speicherung in der DB habe. Denn, wenn ich jetzt Emojis in einen Beitrag/Kommentar schreibe und diesen speichere, so sehe ich Sekunden später mit phpMyAdmin in der DB nur noch Fragezeichen.
Der einzige (für mich sichtbare) Unterschied zu der Manitu-Installation ist eben genau das:
Zeichensatz/Kollation der Verbindung zum Server: utf8mb4_unicode_ci
also eben die Verbindung zwischen Styx und der DB. Ich werde wohl mal den Hosttech-Support anschreiben und um die Umstellung von utf8_unicode_ci zu utf8mb4_unicode_ci ersuchen.
Ian Styx am |
Das ist verwirrend, ich weiß. Aber es gibt einfach ein paar Dinge auseinanderzuhalten. UTF8 als Beschreibung und Name ist eigentlich das was Mysql als UTF8MB4 versteht. Das ist einer der (historischen) Eigenarten von Mysql dass sie damals UTF8 für einen Raum benutzten ohne diesem den vollständigen unicode Satz zu geben. Überall sonst meint also der Name UTF8 eben den erweiterten Satz mit den inkludierten Bytes. Solch ein Byte, zb Emojis, sind belegte 4 Zeichen, die ein einzelnes Zeichen aus diesem erweiterten Unicode beschreiben, also 4 Byte je Zeichen. Hat also eine Datenbank die Anweisung 4-Byte pro Zeichen zuzulassen muss sie auch so zählen - was insbesondere wichtig ist für die Indizes, also die gecachten "Tabellen" zur schnelleren Indizierung bei Datenabfragen und Suchabfragen. Ohne diese wären Datenbanken grottig langsam und das zunehmend.
Nun speichert also zb phpmyadmin eigentlich als UTF8, wenn utf-8 für den Export gesetzt ist. (Trotzdem bitte noch mal nachkontrollieren ob es das auch bei dir macht.). So eine sql Datei hat dann eine versteckte Zeichenfolge, eine Byte Order Mark (BOM), am Dateianfang, die die Verwendung von UTF-8 als Kodierung kennzeichnet. Notepad++ liest das und weiß, dass es sich um UTF8 handelt. Darstellen kann es die erweiterten Zeichen aber nicht. Du wirst keine Emojis sehen, aber dafür ihren Platzhalter, also das ominöse umrandete Kästchen von dem ich sprach. Ist es nicht da und an dessen Stelle nur ein ? ist das 4-Byte Zeichen nicht erkannt bzw kaputt. Kaputtes aber kann man nicht so wieder in eine DB importieren so das daraus wieder komplette 4-Byte Zeichen werden. Deshalb sagte ich, dass ein Export der unzureichend war nicht zur Weiterverarbeitung taugt, außer man nimmt den Verlust in Kauf.
Ich meine das es eigentlich ausreichend wäre/ist, wenn die Kollation der Text Felder (wie schon beschrieben) in den Tabellen utf8mb4_irgendwas (ebenfalls wie beschrieben) ist. Das die ganze DB von vorrnherein so deklariert wird, ist nur dann möglich, wenn man selbst komplett dazu berechtigt ist, was wahrscheinlich bei Hostern nur eher bedingt der Fall sein wird. Bezüglich Kollationen und charsets haben wir also generelle Einstellungen für den Server und den Client, also eher sehr globale Einstellungen, spezifische Datenbankeinstellungen, denn ein Datenbanksystem kann ja mehrere Datenbanken haben, Tabelleneinstellungen die für die Tabellen selbst gelten und Einstellungen der einzelnen Felder in den Tabellen. Das sind die granulierten Abhängigkeiten, meine ich.
Vielleicht irre ich mich diesbezüglich auch und die Export/Import Frage ist doch von der globalen Einstellung abhängig. Geschrieben hatte ich die Datenbank Preparation für eine Styx Installation so: https://ophian.github.io/hc/en/preparing-db.html
Was steht denn im zur Verfügung gestellten Dump und deinen Dumps die du selbst hier gezogen hattest am Anfang bei
Das 40101 ist dabei nur ein comment, der besagt, es nicht unterhalb mysql versionen 4.1.1 zu installieren. Der set names Befehl aber ist wichtig.
Das verstehe ich nicht - auch nicht vom Sinne her. Denn wenn, dann dürftest du dieses Emoji 🤔 nicht sehen können, weder hier im blog comment, noch in der aufgeklappten pma Tabellenansicht, noch in der pma Bearbeitungsansicht für ein comment. Und wenn, dann hätte es bisher ja auch nicht geklappt.. 🧐
Ian Styx am |
Tut sich da diesbezüglich noch was? Nur um sicherzugehen dass es kein allgemeiner Fehler ist?! Oder auch nur um zu sicher zu sein dass deine Grundlagen stimmen?!! 😅 (Drängeln will ich aber nicht. Also keine Nötigung!)
Beat Post author am |
Hmmm... 🤔
Im Moment habe ich einfach andere Prioritäten. Zudem fällt es mir halt schwer einem Problem hinterherzujagen, welches ich nur halbwegs verstehe.
Ich denke nicht, dass es sich um ein Styx-Problem handelt, denn bei der Manitu-Installation habe ich diese Probleme nicht.
In den Hosttech-DB-Dumps steht zu Beginn:
Und zur Information, die Deklaration der DBs:
Diesbezüglich sind also beide Hoster ziemlich gleich (konservativ) unterwegs.
Ian Styx am |
Und hast du da unter notepad++ auch das angesprochene Kästchen als placeholder für die 4-Byte Zeichen stehen?
Dann wäre es dort auch richtig.
Ich nehme an, dass das eben inklusive dem SET NAMES utf8mb4 im hosttech dump eben nicht da war, was das ganze erklären kann. Dann bliebe nur noch zu klären, ob sie auch deine Datenstruktur (also die Tabellen) mit dem Dump überschrieben haben und ob wir da eventuell wieder etwas einfügen müssten. Und vielleicht, ob sie nicht doch noch die Originaldatenbank haben mit der man einen verbesserten Datenexport wagen könnte. Oder wir lassen das und leben halt mit unseren Fragezeichen, bzw tragen sie selbst wieder nach, wo sie zu fragwürdigen Irrsinn führen. 🤨
Das mit der email und mail steht auch immer noch aus, oder?
Beat Post author am |
Nein. Ausser den Fragezeichen war/ist da gar nichts.
Ja. Nach wie vor keine E-Mail-Benachrichtigungen.
Ian Styx am |
Kannst du mir solch einen Export bitte mal im Backend hinterlegen?!? (Dateiname a la 47478rvr68rcc4644x747x5xe57.sql als Beispiel bitte für die Öffentlichkeit unratbarbar machen 🙂)
Beat Post author am |
ist hochgeladen
Ian Styx am |
Danke. Schau noch mal in unseren Text bitte.
Beat Post author am |
Geht auch *.rar? Wenn ja, dann siehe Mediathek.
Ian Styx am |
Ja. Danke! Kann jetzt alles wieder weg. Sicher ist sicher.
Ich werde den Dump demnächst mal näher untersuchen. Auf den ersten Blick scheinen die Datei Kodierung in NPP und die Tabellen KOLLATIONEN des Dumps zu stimmen, aber es hat die Fragezeichen. Ich muss mal in Ruhe und mit etwas Zeit überlegen wie das nun eigentlich sein kann. Allerdings, zerstückelte 4-Byte Fragezeichen Ersatzlinge wieder rückzuverwandeln geht leider nicht, wie schon gesagt.
Das ist aber ja ein Dump des jetzigen Zustandes. Nicht der von hosttech gemachte Dump, nicht wahr?!
Ähneln die sich gerade in den beiden genannten genannten Überprüfungen? 🧐
Beat Post author am |
Ja. Ist glaub ich vom 07.05.21. Habe ich selber exportiert.
Ja. Die sind vom Aufbau her gleich.