Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: TOOL: Zeichensatz und Kollation der Datenbank ändern

    Karl1

    • Experte
    • Beiträge: 1.879
    Hallo Zusammen,
    hier ein kleines Tool für diejenigen die gemischte Kollationen in der Datenbank haben, oder Kollation und Zeichensatz umstellen wollen.

    ZIP-Archiv entpacken, Datei in den Shoproot kopieren und im Browser mit "meine_shop_url.de/set_collation.php" aufrufen.
    Nach der Anwendung Datei löschen.

    [ Für Gäste sind keine Dateianhänge sichtbar ] [ Für Gäste sind keine Dateianhänge sichtbar ] [ Für Gäste sind keine Dateianhänge sichtbar ]

    Gruß Karl

    [EDIT Tomcraft 04.12.2023: Tool aktualisiert.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=43174.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #1 am: 30. November 2023, 23:24:06
    Vielen Dank für das Tool, Karl.

    Gemischte Collation ist übrigens erst schädlich wenn bei einem JOIN zweier Tabellen Strings mit verschiedenen Collations verglichen werden, z.B. in einer ON-Clause.
    Das heißt, man kann die DB durchaus  auf z.B. utf8mb4_unicode_ci  laufen haben und lediglich die Tabellen die bei Suche im Shop betroffen sind mit utf8mb4_german2_ci  (wegen der Sortierung und wegen Erkennen von Umlauten (siehe Ticket #2311)).
    Dafür muß man natürlich wissen welche Tabelle im Shop ge-JOINt werden.
    Soweit ich das sehe sind für die Suche betroffen
    categories_description
    manufacturers_info
    products_description
    products_options
    products_options_values
    products_tags_options
    products_tags_values


    Wenn die alle auf Collation utf8mb4_german2_ci  die restlichen Tabellen auf z.B. utf8mb4_unicode_ci  dürfte es keine Probleme geben.
    Kann mich jedoch irren.

    Weißt du noch bei welcher Query es zu dem Fehler kam den du in
    modified eCommerce Shopsoftware 3.0.0 rev 15588 veröffentlicht | Antwort #50
    berichtet hast ?

    Gruß,
    noRiddle

    Karl1

    • Experte
    • Beiträge: 1.879
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #2 am: 01. Dezember 2023, 12:06:54
    Hallo noRiddle,
    das Fehler trat auf mit dem Modul Kundenerinnerung.
    Code: PHP  [Auswählen]
            $strstockQuery = "SELECT cr.*,
                                    p.products_quantity,
                                    p.products_model,
                                    p.products_image
                              FROM customers_remind cr
                              JOIN "
    .TABLE_PRODUCTS." p
                                    ON p.products_id = cr.products_id
                                    AND p.products_quantity >= cr.customers_st"
    ;

    Ist bei einem Update (Kollationen werden nicht verändert) und bei einer kompletten Neuanlage eines Shops (alles auf utf8_german2_ci) kein Problem.

    Die Schwierigkeiten beginnen, wenn man eine Neuistallation (alles, auch die DB selbst, wird auf utf8_german2_ci umgestellt) macht und anschließend seine Datensicherung (utf8_general_ci) wieder einspielt.
    Mir ist bewusst, dass man bei der Datensicherung das Häkchen "Ohne Zeichenkodierung 'COLLATE' und 'DEFAULT CHARSET'" setzen könnte - hab ich aber nicht.
    Die Tabellen sind zum größten Teil auf "utf8_general_ci", die Datenbank selbst hat Kollation "utf8_german2_ci".

    Die durch das Modul Kundenerinnerung neu angelegte Tabelle "customers_remind" hat Kollation "utf8_german2_ci".

    Gruß Karl

    Edit - Nachtrag: Kann man sich bei Tickets im Bug-Tracker benachrichtigen lassen?

    Q

    • Fördermitglied
    • Beiträge: 1.531
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #3 am: 01. Dezember 2023, 13:18:05
    [...]
    Edit - Nachtrag: Kann man sich bei Tickets im Bug-Tracker benachrichtigen lassen?

    Soweit ich weiß nicht. Hatte das auch die Tage mal in einem Ticket angefragt, weil es aus der "Comunity" raus echt schwer ist den Überblick zu behalten, wenn man ein Ticket erstellt oder einem Ticket etwas schreibt und dann Rückmeldungen/-fragen kommen. Reaktion vom Team: Kommentar aus dem Ticket gelöscht. Keine Rückmeldung per Mail o.ä. Das Ticketsystem ist wohl für die Comunity eher als "Fire and forget" System gedacht.

    Duncan

    • Fördermitglied
    • Beiträge: 181
    • Geschlecht:
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #4 am: 01. Dezember 2023, 13:34:20
    Ich hatte mal so ein bischen rumprobiert und unseren über die Jahre immer wieder geupdateten Testshop auf die 3.0.0 geupdatet und anschliessend manuell per phpmyadmin alle Spalten- und Tabellenkollationen auf utf8mb4_german2_ci umgestellt.
    Funktioniert soweit, aber: Die Suche nach dem Suchbegriff "Grün" ergibts als Ergebnis: Ihre Suche nach: gr%C3%BCn

    Überraschend dabei ist:
    Nachstellbar ist der Fehler im stable Shop, wenn man einer Artikelbeschreibung das Wort Grün hinzufügt.

    Gruss

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #5 am: 01. Dezember 2023, 13:36:31
    Siehe dazu Ticket #2617.

    Grüße

    Torsten

    Duncan

    • Fördermitglied
    • Beiträge: 181
    • Geschlecht:
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #6 am: 01. Dezember 2023, 13:45:53
    Danke Torsten  :thx:

    In unserem Fall funktioniert die dort im Ticket von noRiddle   :cheers1:  vorgeschlagene Lösung.

    Gruss

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #7 am: 01. Dezember 2023, 16:11:27
    [...]
    Die Schwierigkeiten beginnen, wenn man eine Neuistallation (alles, auch die DB selbst, wird auf utf8_german2_ci umgestellt) macht und anschließend seine Datensicherung (utf8_general_ci) wieder einspielt.
    [...]

    Mmh, ich höre oft, daß das so gemacht wird.
    Ich halte das für den verkehrten Weg.
    Ich würde bei Updates immer die Original-DB nehmen
    - oder erstmal eine Kopie als Testumgebung und immer nach Sichern der gesamten DB -
    und sie schrittweise mittels der *.sql-Dateien in /_installer/update/  auf die gewünschte Shop-Version anheben.
    Eine Datensicherung in eine neue DB importieren geht sehr oft allein deshalb schief, weil es in der neuen Shop-Version evtl. DB-Felder gibt die es vorher nicht gab oder gar welche weggefallen sind, sodaß es beim Import Probleme mit den Einträgen gibt..

    [...]
    das Fehler trat auf mit dem Modul Kundenerinnerung.
    Code: PHP  [Auswählen]
            $strstockQuery = "SELECT cr.*,
                                    p.products_quantity,
                                    p.products_model,
                                    p.products_image
                              FROM customers_remind cr
                              JOIN "
    .TABLE_PRODUCTS." p
                                    ON p.products_id = cr.products_id
                                    AND p.products_quantity >= cr.customers_st"
    ;
    [...]

    Mmh, da scheint mir Wissen zu fehlen.
    Ich sehe in der Query keine Strings die verglichen werden, lediglich Integers und somit dürfte es eigtl. keine Kollision wegen unterschiedlichen Collations geben.

    [...]
    Edit - Nachtrag: Kann man sich bei Tickets im Bug-Tracker benachrichtigen lassen?

    Das geht leider nicht, hatte ich auch bereits nachgefragt.
    Ich schaue immer mal wieder rein und benutze dann das Suchfeld, suche nach "noRiddle" und finde damit alle meine Tickets und ebenfalls die Tickets, in denen ich kommentiert habe.

    Gruß,
    noRiddle

    Karl1

    • Experte
    • Beiträge: 1.879
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #8 am: 04. Dezember 2023, 11:18:13
    Hallo Zusammen,
    habe das Tool aufgrund der hier entstandenen Diskussion erweitert.

    [ Für Gäste sind keine Dateianhänge sichtbar ] [ Für Gäste sind keine Dateianhänge sichtbar ] [ Für Gäste sind keine Dateianhänge sichtbar ]

    Neben Charset und Kollation kann jetzt auch die Engine geändert werden.

    Bei einem Autoupdate von 2.0.7.2 auf 3.0.0 wird die Speicher-Engine der Datenbank umgestellt auf "MyISAM".
    Dies kann zu unterschiedlichen Tabellen-Engines führen, was unter Umstaänden nicht vorhersehbare Probleme auslöst.

    Gruß Karl

    [EDIT Tomcraft 04.12.2023: Tool in Beitrag 1 aktualisiert.]

    scooterama

    • Fördermitglied
    • Beiträge: 284
    • Geschlecht:
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #9 am: 20. Dezember 2023, 17:11:54
    Vielen Dank für dieses Tool Karl.

    AllyG

    • Schreiberling
    • Beiträge: 419
    • Geschlecht:
    Re: TOOL: Zeichensatz und Kollation der Datenbank ändern
    Antwort #10 am: 03. Januar 2024, 00:27:07
    Auch von mir einen herzlichen Dank für dieses tolle Tool Karl.
    Hat mir was diesen Sachverhalt angeht das auf den aktuellen Stand bringen meiner in die Jahre gekommenen Datenbank sehr geholfen!
     :thx:
    1 Antworten
    4128 Aufrufe
    08. September 2010, 11:06:51 von floh
    4 Antworten
    3788 Aufrufe
    28. Januar 2016, 15:57:47 von Bonsai
    10 Antworten
    8704 Aufrufe
    24. November 2014, 13:14:48 von hstreicher
               
    anything