liebewinter: Ruft fehler bei dem Datenbank

hallo, ich habe meine Webseite mit Oxid gebaut...

Die Probleme ist, dass der Datenbank fehler macht...

Ich habe nach dem Fehler gesucht in der Logdatei, sie sagt,

[2020-08-17 12:19:16] OXID Logger.ERROR: Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like' ["[object] (OxidEsales\Eshop\Core\Exception\DatabaseErrorException(code: 1267): Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like' at /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/Database/Adapter/Doctrine/Database.php:925, Doctrine\DBAL\Exception\DriverException(code: 0): An exception occurred while executing 'select\n oxvarname, oxvartype, DECODE( oxvarvalue, 'fq45QS09_fqyx09239QQ') as oxvarvalue\n from oxconfig\n where oxshopid = ? and oxmodule LIKE ?' with params [1, "\x74\x68\x65\x6d\x65\x3a\x14\x28\x0d\x4c\x97\xa5\xee\xaa\x20\xb8\x1a\x7b\x1e\x57\x25"]:\n\nSQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like' at /home/kalamulu/public_html/mela/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:106, Doctrine\DBAL\Driver\PDOException(code: HY000): SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like' at /home/kalamulu/public_html/mela/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:129, PDOException(code: HY000): SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like' at /home/kalamulu/public_html/mela/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:127)\n[stacktrace]\n#0 /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/Database/Adapter/Doctrine/Database.php(998): OxidEsales\EshopCommunity\Core\Database\Adapter\Doctrine\Database->convertException(Object(Doctrine\DBAL\Exception\DriverException))\n#1 /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/Config.php(582): OxidEsales\EshopCommunity\Core\Database\Adapter\Doctrine\Database->getAll('select\n ...', Array)\n#2 /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/Config.php(400): OxidEsales\EshopCommunity\Core\Config->_loadVarsFromDb(1, NULL, 'theme:\x14(\rL\x97\xA5\xEE\xAA ...')\n#3 /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/Config.php(437): OxidEsales\EshopCommunity\Core\Config->initVars(1)\n#4 /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(590): OxidEsales\EshopCommunity\Core\Config->init()\n#5 /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(136): OxidEsales\EshopCommunity\Core\ShopControl->_runOnce()\n#6 /home/kalamulu/public_html/mela/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(27): OxidEsales\EshopCommunity\Core\ShopControl->start()\n#7 /home/kalamulu/public_html/mela/source/index.php(16): OxidEsales\EshopCommunity\Core\Oxid::run()\n#8 {main}\n"] []

Ich habe nach diese Probleme gesucht, und habe dieses gefunde...

Ich versuche die Lösung zu folgen, aber als meine fehlende Kenntnisse von Datenbank, bekomme Fehler...

Auf der MySQL Kommando schreibe,

SHOW CREATE TABLE oxconfigdisplay;

bekomme keine Fehler

dann schreibe,

ALTER TABLE OXCONFIG CHANGE OXID latin1_general_ci CHARACTER SET utf8 COLLATE utf8_general_ci;

und Mysql sagt,

#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei 'SET utf8 COLLATE utf8_general_ci' in Zeile 1

so, wie verstand habe.., ist diese teile die Fehler macht CHARACTER SET utf8 COLLATE utf8_general_ci

Ich habe versuche verändert von CHARACTER SET utf8 nach CHARACTER SET UTF8 aber immer bekomme gleiche Fehler...

akzeptierte Antworten

  1. Hallo liebewinter,

    bist Du sicher, dass Du nach der richtigen Fehlerursache suchst?

    Die Fehlermeldung sagt, dass dieses Statement

    'select\n oxvarname, oxvartype, DECODE( oxvarvalue, 'fq45QS09_fqyx09239QQ') as oxvarvalue\n from oxconfig\n where oxshopid = ? and oxmodule LIKE ?'

    mit diesen Parametern aufgerufen wird:

    with params [1, "\x74\x68\x65\x6d\x65\x3a\x14\x28\x0d\x4c\x97\xa5\xee\xaa\x20\xb8\x1a\x7b\x1e\x57\x25"]

    Der erste Parameter ist eine 1, das wäre die oxshopid. Der zweite Parameter ist eine wilde Folge aus Hex-Zeichen. Wenn ich die decodiere, ergibt sich

    thme:\x14(\0dL—¥îª ¸\x14{\x1eW%

    Das ist ein seltsamer Name für ein oxmodule. Ist es wirklich nötig, das Encoding der Datenbank zu ändern?

    Ich frage: Woher kommt dieser Hex-String? Ist das Datenmüll?

    Aber wenn Du ändern willst: lies das Handbuch. MySQL 5.7 hat drei Befehle zum ändern von Spalten: CHANGE, MODIFY und ALTER. Dokumentation. In MySQL 8 kommt noch RENAME COLUMN hinzu.

    Mit CHANGE änderst Du den Namen UND die Definition der Spalte. Wenn Du den Namen nicht ändern willst, musst Du ihn bei CHANGE zweimal hinschreiben. Wenn Du nur die Definition ändern willst, dann nimm MODIFY.

    ALTER TABLE OXCONFIG MODIFY OXID ...

    Für das ... musst Du die vollständige neue Spaltendefinition angeben. Nicht nur die Collation.

    Aber: Warum OXID? Diese Spalte wird in der SQL Abfrage nicht verwendet. Meine Vermutung ist: Das Problem ist bei OXMODULE. Welche COLLATION hat diese Spalte jetzt?

    Also: Lieber noch einmal nachdenken. Woher kommt dieses \x...\x...\x...? Ist das wirklich richtig so? Guck in die OXCONFIG Tabelle hinein. Welche Werte stehen in der OXMODULE Spalte? Steht da wirklich etwas wie thme:\x14(\0dL—¥îª ¸\x14{\x1eW%??? Wenn nicht, dann ist dein Parameter Müll und es ist falsch, die Datenbank zu ändern.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Danke für deine Antwortet!

      bist Du sicher, dass Du nach der richtigen Fehlerursache suchst?

      Ich habe in das Oxid Forum gefragt, Der Ursprüngen-Titel Name, der ich hatte, habe sie verändert von der ich jetzt habe...

      Ich frage: Woher kommt dieser Hex-String? Ist das Datenmüll?

      Vielleicht das kann sein, versuche der tmp Verzeichnis von meinem Rechner leer machen und dann versuche wieder die Webseite nach dem Server bringe...

      Diese ist die Zweite mal das mache, das ist, die Webseite von meinem Rechner nach ausßere Server bring, mein Erste mal ich habe nicht diese Fehler bekomme von dem Datenbank...

      ich habe auch gefragt an der Webseite, sie antwortet,

      Meine Vermutung war eigentlich, dass die Tabelle klein geschrieben werden muss. Es ist aber sehr gut möglich, dass das ebenfalls nicht funktioniert. Bitte versuchen Sie es dennoch.

      Bei weiteren Fragen stehen wir Ihnen gerne zur Verfügung.

      1. ich habe die Webseite von meinem Rechner nach dem Webserver gebracht, und bekomme gleiche Fehler...

        Auf der tmp Verzeichnis habe zwei Dateien bekomme,

        1 - Der Datei config.1.amodules.txt und drinnen gibt nur, b:0;

        2 - Der Datei container_cache.php postet nur einiger zeilen weil zu lange ist,

        <?php
        
        use Symfony\Component\DependencyInjection\Argument\RewindableGenerator;
        use Symfony\Component\DependencyInjection\ContainerInterface;
        use Symfony\Component\DependencyInjection\Container;
        use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
        use Symfony\Component\DependencyInjection\Exception\LogicException;
        use Symfony\Component\DependencyInjection\Exception\RuntimeException;
        use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;
        
        /**
         * This class has been auto-generated
         * by the Symfony Dependency Injection Component.
         *
         * @final since Symfony 3.3
         */
        class ProjectServiceContainer extends Container
        {
            private $parameters = [];
            private $targetDirs = [];
        
            public function __construct()
            {
                $this->parameters = $this->getDefaultParameters();
        
                $this->services = [];
                $this->normalizedIds = [
                    'doctrine\\dbal\\connection' => 'Doctrine\\DBAL\\Connection',
                    'oxidesales\\developertools\\framework\\module\\re
        
      2. Hallo liebewinter,

        ok, was Du da von Stackoverflow übernommen hast soll die Collation der Table ändern. Das geht so aber NUR für die Table.

        MYSQL hat an mehreren Stellen die Möglichkeit, eine Collation einzustellen:

        • Für die DATABASE: Neue Tabellen in der Database bekommen diese Collation
        • Für die TABLE: Neue Spalten in der Table bekommen die Collation
        • Für die COLUMN

        Das Ändern der Collation einer Column hat eine andere Syntax. Aber musst Du es tun?

        Wenn Du es einmal für die DATABASE gemacht hast und dann nie mehr angibst, sollten alle Tabellen und Text-Columns die Collation der Database bekommen. Du hast im Oxid-Forum leider nicht vollständig geantwortet. Du zeigst dort die Collation der Database. Das kann bedeuten, dass alle Text-Columns ebenfalls UTF8 sind. Dann musst Du gar nichts tun.

        Aber das muss man überprüfen: Welche Collation hat die OXCONFIG Table? Welche Collation haben die Spalten der OXCONFIG Table?

        Was Du um 14:55 geschrieben hast, verstehe ich nicht.

        Den Screenshot der OXCONFIG Tabelle im Oxid-Forum verstehe ich auch nicht. Ich habe OXID nicht. Ich weiß nicht, welche Spalten man da sieht.

        Ich befürchte, dass man das Problem nicht aus der Ferne lösen kann.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Die Probleme war wie ich der Datenbank exportieren..., ich habe auf meine Rechner, Adminer, als ich Erste mal gemacht und geschafft habe, habe ich ein Screenshot gemacht, die Probleme ist das einiger Parameter vor das Bild verändert habe..

          Jetzt kannst sie sehen

          Rolf du hast mir vielll geholfen, weil ich jetzt nicht viele Produkte zu Hause haben kann nicht mache, in einem Monat ich werde mehr haben, zwischen entscheidest du dich von einem, dann schickt mir ein E-Mail (olasagarre@hotmail.com), und werde dich eine geschenkt machen...

          noch.. jetzt habe kein Geld(habe 40 euros bis ende Monat..), aber wenn ein Bissen habe, ich möchte ein Spenden für die Forum geben...ohne eure hilfe, jetzt hätte nicht diese Webseite...

          Ich bedanke mich alle euch!

          1. Hallo liebewinter,

            Rolf du hast mir vielll geholfen, weil ich jetzt nicht viele Produkte zu Hause haben kann nicht mache, in einem Monat ich werde mehr haben, zwischen entscheidest du dich von einem, dann schickt mir ein E-Mail

            Möchtest du wirklich diese Mailadresse veröffentlichen?

            noch.. jetzt habe kein Geld(habe 40 euros bis ende Monat..), aber wenn ein Bissen habe, ich möchte ein Spenden für die Forum geben...ohne eure hilfe, jetzt hätte nicht diese Webseite...

            Das ist sehr lieb von dir, aber es besteht keine Verpflichtung für eine Spende. Vor allem dann nicht, wenn du noch kein Geld verdienst. Später darf es dann ruhig ein wenig mehr sein. 🤣

            Bis demnächst
            Matthias

            --
            Du kannst das Projekt SELFHTML unterstützen,
            indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
            1. Möchtest du wirklich diese Mailadresse veröffentlichen?

              Wenn du denkst, die Probleme bringe kann, kannst du lösen...

              Das ist sehr lieb von dir, aber es besteht keine Verpflichtung für eine Spende. Vor allem dann nicht, wenn du noch kein Geld verdienst. Später darf es dann ruhig ein wenig mehr sein.

              Wenn ich die Möglichkeit 500 Euro als Spende für euch gegeben hätte, dann wäre bedeutet das mein Shop sehr gute laufen sollte 😀