Contao-Camp 2024
Ergebnis 1 bis 4 von 4

Thema: Isotope Update Fehler: Duplicate entry uniqid in Tabelle tl_iso_product_collection

  1. #1
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    177

    Standard Isotope Update Fehler: Duplicate entry uniqid in Tabelle tl_iso_product_collection

    Hallo,

    ich bin dabei ein Update von Contao 3.2.16 mit Isotope 2.1.9 auf das aktuelle Contao 3.5.33 mit Isotope 2.4.5 (Testumgebung auf dem Server mit gleichen Einstellungen wie beim laufenden produktiven System, Verwendung des ER2) durchzuführen.

    Nach dem erfolgreichen Contao-Update habe ich alle Erweiterungen aktualisiert. Dabei wurde mir über die Erweiterungsverwaltung das Isotope-Update ("Version xyz verfügbar") NICHT angeboten. Warum?
    Ich habe jedenfalls dann in der Erweiterungsverwaltung über "Erweiterung installieren" Isotope 2.4.5 inkl. der nötigen anhängigen Erweiterungen installiert. Dies führte zu einem "Gateway Timeout" Fehler.
    Habe dann über das Installtool die Datenbank aktualisiert, dabei kamm es zu folgendem Fehler:

    Code:
    Fatal error: Uncaught exception Exception with message Query error: Duplicate entry '' for key 'uniqid' (ALTER TABLE `tl_iso_product_collection` ADD UNIQUE KEY `uniqid` (`uniqid`);) thrown in system/modules/core/library/Contao/Database/Statement.php on line 295
    
    #0 system/modules/core/library/Contao/Database.php(207): Contao\Database\Statement->query('ALTER TABLE `tl...')
    #1 system/modules/core/controllers/BackendInstall.php(619): Contao\Database->query('ALTER TABLE `tl...')
    #2 system/modules/core/controllers/BackendInstall.php(181): Contao\BackendInstall->adjustDatabaseTables()
    #3 contao/install.php(20): Contao\BackendInstall->run()
    #4 {main}
    Dieser Fehler wird wohl verursacht von folgendem DB-Änderungs-Befehl:
    Code:
    ALTER TABLE `tl_iso_product_collection` ADD UNIQUE KEY `uniqid` (`uniqid`);
    Das Feld "uniqid" soll also ein "UNIQUE KEY" werden. Habe mir daraufhin die DB angeschaut. Das Feld uniqid enthält für alle Bestellungen (type = oder) jeweils unterschiedliche Einträge.
    Es gibt jedoch auch Zeilen mit type = cart statt type = order - das sind wohl Warenkörbe, die befüllt wurden, aber die Bestellung nicht abgeschlosssen wurde. Dort ist das Feld uniqid leer.
    Das führt wohl dazu, dass der obige ALTER TABLE Befehl nicht ausgeführt werden kann (Duplicate entry). Oder sehe ich das falsch?

    Ist dieses Problem bekannt bzw. gibt es eine Lösung?

    Was würde passieren, wenn man alle Zeilen mit type = cart löscht? Die unabgeschlossenen Warenkörbe müssten ja nicht unbedingt weiter gespeichert werden. Dann sollte ja der ALTER TABLE Befehl klappen.

    Darf man diese Zeilen einfach löschen oder gibt es dann ungewollte "Nebenwirkungen"?

    Bin für jeden Hinweis dankbar!

    Danke, Steve

  2. #2
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    177

    Standard

    Ich habe jetzt direkt in der DB über
    Code:
    UPDATE tl_iso_product_collection SET uniqid = NULL WHERE uniqid = "";
    überall die leeren uniqid-Einträge durch NULL ersetzt.

    Dadurch ist die Aktualisierung der DB über
    Code:
    ALTER TABLE `tl_iso_product_collection` ADD UNIQUE KEY `uniqid` (`uniqid`);
    möglich.

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.050
    Partner-ID
    10107

  4. #4
    Contao-Nutzer
    Registriert seit
    19.06.2009.
    Beiträge
    177

    Standard

    Kurze Info für alle, die evtl. das gleiche Problem haben/hatten: Nach einem Update von PHP 5.4 auf PHP 5.6 ist dieser Fehler nicht mehr aufgetreten.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •