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: Neuinstallation - Datenbank - Tabelle "customer_status" -Spalte "... _name"

    ELF-K11

    • Frisch an Board
    • Beiträge: 54
    • Geschlecht:
    Hallo,

    ich bin gerade dabei einen neuen shop aufzusetzen.
    Modified - Version: 2.0.7.2-r14622
    Nach den ersten Schritten der Installation = Datenbankverbindung hergestellt und die vorher angelegte leere Datenbank wird mit den Tabellen gefüllt.
    In dieser Situation habe ich mir mit phpMyAdmin die Datenbank angeschaut und dabei bemerkt, das in der Tabelle "customer_status" in der Spalte "customer_status_name" in den defaultmäßig angelegten Einträgen bei den Einträgen, die den Umlaut ä enthalten, der Umlaut durch ein chinesisches (?) Schriftzeichen ersetzt ist.
    Ist das ein Bug oder weiß jemand eine Erklärung, wie das zustande kommen könnte?
    Die Datenbank ist vom Typ "InnoDB", die Kollation ist "utf8mb3_general_ci".

    Zeichensatz/Kollation der Verbindung zum Server ist "utf8mb4_unicode_ci".

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

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

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.748
    • Geschlecht:
    Was meinst du mit

    [...]
    Zeichensatz/Kollation der Verbindung zum Server ist "utf8mb4_unicode_ci".
    [...]

    genau ?

    Zeichensatz und Collation betrifft nicht dieselbe Konfiguration.
    Falls du was "Verbindung zum Server" betrifft die Konstante DB_SERVER_CHARSET in /includes7configure.php  meinen solltest, trage da mal 'utf8mb4' oder einfach 'utf8' ein.
    Ansonsten ist die Datei /_installer/includes/sql/customers_status.sql  in meinem Download des aktuellen Paketes in ANSI kodiert, ändere das mal auf UTF-8 ohne BOM.
    In der DB kannst du die verhunzten Umlaute mittels phpMyAdmin händisch korrigieren.

    Ich habe keine Erfahrung mit diesen modernen *mb3 und *mb4-Kollationen, evtl. gibt es damit wirklich Probleme in manchen Zusammenhängen.
    Bitte mache deshalb dazu ein Ticket im Bug-Tracker auf mit Referenz auf diesen Thread.
    >> Bug-Tracker

    Gruß,
    noRiddle

    ELF-K11

    • Frisch an Board
    • Beiträge: 54
    • Geschlecht:
    Hallo,
    vielen Dank für die Antwort. Ich bin nicht der "crack" in diesen Dingen und habe die Information über den Zeichensatz/Kollation der Verbindung zum Server mit aufgenommen, weil mir auffiel, dass diese anders ist als Kollation der Datenbank und ich nicht wußte, ob die Information hilfreich ist oder nicht.
    Im Übrigen betrifft die Merkwürdigkeit auch noch die Tabelle "tax_class", Spalte "tax_class_title".
    Ich folge Deinem Vorschlag und mache einen Bug-Tracker-Eintrag.
    Gruß

    Ticket angelegt:https://trac.modified-shop.org/ticket/2380#ticket

    Timm

    • Fördermitglied
    • Beiträge: 6.165
    Moin

    Zeichensatz/Kollation der Verbindung zum Server ist "utf8mb4_unicode_ci".

    Damit ist das in phpmyadmin gemeint:
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Und mit
    Die Datenbank ist vom Typ "InnoDB", die Kollation ist "utf8mb3_general_ci".
    ist vermutlich das gemeint:
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Was mich wundert, dass ich bei "Zeichensatz/Kollation der Verbindung zum Server:" kein utf8mb3_general_ci finden kann.

    Und da bei ihm ja dort "utf8mb4_unicode_ci" steht, sollten doch neue Tabellen, wo keine Kollation angegeben ist im SQL, als Kollation utf8mb4_unicode_ci haben. Wo kommt dann das utf8mb3_general_ci her?

    Gruß Timm

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.748
    • Geschlecht:
    Ich habe diesen Satz nicht verstanden und versucht die Bezeichnungen aufzuklären
    Zitat
    Zeichensatz/Kollation der Verbindung zum Server ist "utf8mb4_unicode_ci".
    was mir nicht gelungen zu sein scheint. Kollation ist nicht gleich Zeichensatz, weshalb der zitierte Satz keinen Sinn macht.

    Wie dem auch sei ist bei Installation passiert was passiert ist.
    Ich vermute inzwischen, daß es mit dem Ticket #2296 zu tun hat.

    Gruß,
    noRiddle

    Timm

    • Fördermitglied
    • Beiträge: 6.165
    Aber das Feld in phpmyadmin heißt so. Er wollte nur darlegen, was bei ihm in phpmyadmin eingestellt ist.

    Gruß Timm

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.748
    • Geschlecht:
    Ah, stimmt, ich Blindfisch. :tomato:
    Verstehe.

    Gruß,
    noRiddle

    ELF-K11

    • Frisch an Board
    • Beiträge: 54
    • Geschlecht:
    Aber das Feld in phpmyadmin heißt so. Er wollte nur darlegen, was bei ihm in phpmyadmin eingestellt ist.
    [...]
    Danke für die Klarstellung, das habe ich offensichtlich nicht so gut hinbekommen mit der Erklärung ;-) .

    Zur Klarstellung noch einmal mein vorgehen:
    • Mit der Verwaltungsoberfläche meines Hostere eine neue Datenbank für die Domäne des Shops erzeugt.
    • Datenbankname vergeben, Datenbankbenutzer zugeordnet und Paßwort vergeben.
    • Modified 2.0.7.2-r14622 auf dem Webspace entpackt und die Installationsroutine aufgerufen.
    • Datenbankverbindung hergestellt und da die Datenbankverbindung und Anmeldung an der Datenbank erfolgreich waren, wurden die Tabellen erzeugt und damit dieser Installationsschritt erfolgreich abgeschlossen.
    • Dann habe ich die Installation zunächst nicht fortgesetzt, sondern mit phpMyAdmin mir die Datenbank angeschaut: Sie enthielt 92 Tabellen, viele Tabellen schon mit Datensätzen. Ich habe einfach mal in die eine oder andere Tabelle geschaut und dabei ist mir das mit den merkwürdigen Schriftzeichen (s. Screenshot in Beitrag 1) aufgefallen.
    • Dann habe ich die Installation zu Ende laufen lassen und bin jetzt dabei zu konfigurieren und meine Einstellungen zu machen.
    Gruß
    ELF-K11

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.748
    • Geschlecht:
    Sehr gut, so kommt man weiter, Danke.
    Nochmals explizit die Frage:
    Welches Character-Set (Zeichensatz) hast du bei Installation angegeben ?
    Ich habe nicht auswendig im Kopf wie das an der Stelle in der Installationsroutine genau heißt und ob man was auswählen muß oder etwas frei eintragen kann. Also anders gefragt: Was steht in der /includes/configure.php  bei DB_SERVER_CHARSET ?

    Wenn da utf8  steht die Default-Collation in der DB jedoch utf8mb4_general_ci  ist könnte es da bereits ein Problem geben. Ich weiß nicht was das DBMS dann genau macht, denn eigtl. ist die Collation utf8mb4_general_ci  dem Character-Set utf8mb4  zugeordnet.
    Kannst ja mal sicherheitshalber diesen Befehl in phpMyAdmin in der betroffenen DB absetzen:
    Code: SQL  [Auswählen]
    SHOW VARIABLES LIKE 'character_set_database';
    und schauen was da bei "value" ausgegeben wird.

    Auch wenn du, nachdem du die defekten Umlaute mittels phpMyAdmin gefixt hast einfach weitermachen kannst, dein Shop wird normal laufen, müssen wir die Ursache herausfinden, damit das nicht noch weiteren Anwendern passiert.

    Allerdings noch einen Tipp:
    Nach Ticket #2351 solltest du die Tabellen auf MyISAM umstellen anstatt InnoDB zu verwenden, es sei denn du bist auf  MySQL 8.0 oder MariaDB 10.2.4, wo der Bug gefixt ist.
    Wenn du dich dafür entscheidest kannst du folgendes Skript verwenden, ins Root des Shops laden und im Browser aufrufen. Danach Skript wieder löschen.

    Code: PHP  [Auswählen]
    <?php
    /*************************************************************************
    * file: alter_engine.php
    * path: root of shop
    * use: convert database tables to engine in config
    *
    * © copyright noRiddle
    *************************************************************************/


    include 'includes/application_top.php';

    //config
    $excl_arr = array(); //exclude tables
    $engine = 'MyISAM'; // InnoDB

    $query = xtc_db_query("SHOW TABLES");
    while($result = xtc_db_fetch_array($query)) {
      foreach($result as $key => $table) {
        if(!in_array($table, $excl_arr)) {
          if(xtc_db_query("ALTER TABLE " . $table . " ENGINE = ".$engine)) {
            echo $key . ' &raquo; ' . $table . ': - converted to ENGINE '.$engine.'<br />';
          } else {
            echo $key . ' &raquo; ' . $table . ': - conversion to ENGINE '.$engine.' failed <br />';
          }
        }
      }
    }
    ?>

    Ich "bettele" ja schon länger darum, daß man bei Installation zumindest die ENGINEs der Tabellen festlegen sollte.

    Gruß,
    noRiddle

    ELF-K11

    • Frisch an Board
    • Beiträge: 54
    • Geschlecht:
    Hallo,
    der SQL-Befehl gibt folgendes aus: character_set_database utf8mb

    In der configure.php im Verzeichnis includes steht: defined('DB_SERVER_CHARSET') or define('DB_SERVER_CHARSET', 'utf8'); // set db charset 'utf8' or 'latin1'

    Während der Installation habe ich nirgends an den Vorgaben was geändert, außer die Daten für die Anmeldung an der Datenbank einzugeben.
    Leider erinnere ich mich nicht mehr, ob es bei der Erzeugung der Datenbank eine diesbezügliche Auswahlmöglichkeit gab. Ich versuche das herauszufinden.
    Verwendet wird ein SQL-Server vom Typ MySQL in der Server-Version 8.0.30 - MySQL Community Server - GPL
    Ich hoffe, die Fragen einigermaßen verständlich beantwortet zu haben.
    Danke & Gruß
    ELF-K11

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.748
    • Geschlecht:
    Dann ändere mal in der /includes/configure.php  bei DB_SERVER_CHARSET auf 'utf8mb'.
    Die MySQL-Version ist gut, sodaß du keine Änderung der ENGINEs auf MyISAM benötigst.

    Der Rest wird durch das Ticket im Bug-Tracker bearbeitet werden.

    Gruß,
    noRiddle

    ELF-K11

    • Frisch an Board
    • Beiträge: 54
    • Geschlecht:
    Hallo noRiddle,
    die von Dir vorgeschlagene Änderung auf 'utf8mb' zeigt interessante Ergebnisse:
    • Änderung von utf8 auf utf8mb = leere weiße Seite beim Shopaufruf.
    • Änderung auf utf8mb3 = leere weiße Seite beim Shopaufruf
    • Änderung auf utf8mb4 = Shop startet normal.
    Ich werde die Texte manuell in der DB ändern und dann mal den nächsten Schritt versuchen (Import und Update von Tabellen aus einer 1.06er DB) und sehen was dann noch so alles passiert.
    Danke für die Hilfe.
    Gruß
    ELF-K11

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.748
    • Geschlecht:
    Na ich meinte ja auch "utf8mb4", sorry, verschrieben.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.748
    • Geschlecht:
    Ist das mit utf8mb4  bei DB_SERVER_CHARSET  jetzt okay ?
    Gab keine Rückmeldung mehr.

    Gruß,
    noRiddle
    0 Antworten
    1124 Aufrufe
    24. März 2021, 19:07:37 von RobtheTop
    5 Antworten
    4411 Aufrufe
    10. November 2011, 21:03:30 von Jenser
    13 Antworten
    3598 Aufrufe
    20. Oktober 2015, 16:34:45 von webald