Hi,
ich habe folgendes ?“Problem”?: Das offizielle Script stellt scheinbar nicht alle Tabellen um.
Ich benutze die 4.9.3 und habe mir die Update-Dateien 4.9.0 - 4.9.x: von hier gezogen: https://www.oxid-esales.com/de/support-services/dokumentation-und-hilfe/oxid-eshop/installation/oxid-eshop-aktualisieren/auf-utf-8-umstellen.html
Das Ganze habe ich jetzt schon vor ein paar Wochen gemacht und der Shop läuft allem Anschein nach ordentlich und mir sind auch keine Probleme ersichtlich
Allerdings sehe ich jetzt in Phpmyadmin unter Kollation, dass folgende Tabellen noch auf latin1 stehen:
- oepaypal_order
- oepaypal_orderpaymentcomments
- oepaypal_orderpayments
- oxinvitations
- oxobject2action
Wie kann ich die 5 Tabellen auch noch fehlerfrei umstellen?
Gruß,
Kai
Warum willst du die denn unbedingt umstellen? Vielleicht ist das ja gar nicht nötig? Zumindest kann ich bei keiner der genannten Tabellen eine Spalte entdecken, welche (im Normalfall) irgendwelche Texte mit Sonderzeichen enthalten außer vielleicht oepaypal_orderpaymentcomments.OEPAYPAL_COMMENT.
Einfach in phpMyAdmin die Kollation ändern. Global für die Tabelle und falls nötig für jedes Feld.
Ohne Änderung kann es bei Joins von Tabellen mit unterschiedlicher Kollation zu fehlern kommen (weiß aber nicht, ob es derartige Joins gibt).
Was mich aber wundert: Ich hab hier noch nen 4.6.5 der bereits mit utf8-Kollation läuft, die ich meines Wissens nicht selbst umgestellt habe. Ein 4.9er sollte doch dann auf jeden Fall auch mit utf8 installiert werden.
Man kann die Kollation seit 4.1.0 bei der Installation auswählen: http://wiki.oxidforge.org/Downloads/4.1.0#Full_UTF8_Support
Seit 4.9.0 ist UTF-8 als Standard vorausgewählt: http://wiki.oxidforge.org/Downloads/4.9.0_5.2.0#UTF-8_as_default_option_during_the_setup
Vielleicht ist es ja ein Shop der von einer alten Version aktualisiert wurde?
Hi,
danke für eure Antworten.
Der Shop wurde damals ohne utf-8 installiert und ein neues Modul funktioniert aber nur richtig nach der uft-8 Umstellung.
@msslovi0
Danke für den Hinweis. Ich war mir nicht sicher ob es bei einer manuellen Umstellung nicht zu Problemen führen kann. Werde es dann mal testen.
Gruß,
Kai
Zeichensatz Tabelle ist nur der Default-Wert für neue Felder. Für die Funktion ist nur der Zeichensatz der einzelnen Felder relevant. Es sollten nur die Felder utf8 sein in denen auch Sonderzeichen vorkommen können, alle anderen (z.B. ID-Felder) bleiben latin.
[QUOTE=leofonic;157168]Es sollten nur die Felder utf8 sein in denen auch Sonderzeichen vorkommen können, alle anderen (z.B. ID-Felder) bleiben latin.[/QUOTE]
Die Begründung, warum man das tun sollte, würde mich sehr interessieren.
Weil die Felder OXID etc. in einer Oxid UTF-8 Installation auch latin sind.
Hm, in meinem nicht, da sind alle UTF-8…
Das ist dann nicht Standard 
Ich kann mich nicht erinnern, da was dran geändert zu haben. Gut, es macht eh keinen Unterschied. Und maintenance-technisch lebt es sich mit nur einer Kollation in der Datenbank auch deutlich einfacher.
@daywlaker,
in Antwort auf Deine anfängliche Frage “Wie kann ich die 5 Tabellen auch noch fehlerfrei umstellen?”
-
In der Datei setup/sql/database.sql kannst Du sehen, welche Kollation Oxid im Original als latin1 einstellt - nämlich die ID’s und den Rest nach Wahl bei der Installation.
Beispiel:.
CREATE TABLE oxarticles
(
OXID
char(32) character set latin1 collate latin1_general_ci NOT NULL COMMENT ‘Article id’,
OXSHOPID
varchar(32) character set latin1 collate latin1_general_ci NOT NULL default ‘’ COMMENT ‘Shop id (oxshops)’,
OXPARENTID
char(32) character set latin1 collate latin1_general_ci NOT NULL default ‘’ COMMENT ‘Parent article id’,
-
Funktional spielt das keine Rolle, nur die Anzeige in der Systemgesundheit gibt Anlass zum Zweifel.
-
Weshalb ID’s in latin1? Weil das bei ID’s (ohne Sonderzeichen) genügt und latin1 schneller ist als utf8. ME ist das eher grenzwertig auf aktuellen Servern.
[QUOTE=Earlybird;157193]@daywlaker,
- In der Datei setup/sql/database.sql kannst Du sehen, welche Kollation Oxid im Original als latin1 einstellt - nämlich die ID’s und den Rest nach Wahl bei der Installation.
[/QUOTE]
Jein. Wenn man den Haken für UTF-8 setzt, wird die Kollation der Datenbank umgestellt: https://github.com/OXID-eSales/oxideshop_ce/blob/v4.9.3/source/setup/oxsetup.php#L2272
Diese wird dann über die Tabellen auf die Felder vererbt und nur bei bei manchen Feldern wird dadurch dann umgestellt:
https://github.com/OXID-eSales/oxideshop_ce/blob/v4.9.3/source/setup/oxsetup.php#L2310
https://github.com/OXID-eSales/oxideshop_ce/blob/v4.9.3/source/setup/sql/latin1_to_utf8.sql
Du meintest, dass die explizit gesetzten Felder bei dieser Kollation bleiben, oder habe ich dich da falsch verstanden (z.B. https://github.com/OXID-eSales/oxideshop_ce/blob/v4.9.3/source/setup/sql/database.sql#L12 )
[QUOTE=Earlybird;157193]@daywlaker,
3. Weshalb ID’s in latin1? Weil das bei ID’s (ohne Sonderzeichen) genügt und latin1 schneller ist als utf8. ME ist das eher grenzwertig auf aktuellen Servern.[/QUOTE]
Meinst du, dass dieser Performance-Gewinn ein Mythos ist? Oder heutzutage kein Thema mehr?