Datenbank-Problem beim Update, wegen Timestamp

Thema wurde von barbara, 23. Juni 2018 erstellt.

  1. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Ich habe mal eine Frage an die Datenbank-Profis hier.

    Bei einem Update von Version 2.6.x auf die aktuelle 3.10 (Paket vom Update - Assistenten) habe ich folgendes Problem:
    Das Update geht ohne Probleme bis zur Shopversion 3.4 / 3.5.1, wenn die Anzeige auf die 3.5.1 umspringt erscheint eine Fehlermeldung für die Tabellen adress_book, categories, configuration, customers, manufacturers, products...

    Im Gambio_Updater habe ich bei dem Update für die 3.4 diesen Befehl gefunden
    Code:
    CREATE TABLE IF NOT EXISTS `configuration_storage` (
      `key` varchar(255) NOT NULL,
      `value` varchar(255) DEFAULT NULL,
      `last_modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`key`)
    ) ENGINE=MyISAM;
    Grund der Meldung ist offenbar, dass der Timestamp nicht gesetzt werden kann, weil es schon einen gibt.

    Hier ist mal einer der Meldungen:
    Code:
    Query: ALTER TABLE `address_book` MODIFY `address_last_modified` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    Error message: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
    Hat jemand eine Idee, wie man das lösen kann?
     
  2. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.669
    Danke erhalten:
    1.264
    Danke vergeben:
    300
    Hi, ich vermute du hast die Wawi Faktura XP installiert, diese legt in jede Tabelle die von der Wawi mit Daten bestückt oder auch gelesen wird eine eigene Spalte an. Diese Spalte hat ein Attribut
    ON UPDATE CURRENT_TIMESTAMP, da aber MySQL nur eine dieser Spalten mit
    dem Attribut zulässt funktioniert das Update nicht.

    Die Lösung ist eine Aktualisierung der MySQL Version auf mindestens 5.6 oder 5.7, damit wurde die Einschränkung aufgehoben und das Update sollte danach ohne Fehler funktionieren.
     
  3. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Danke Till,
    Genau, es ist Faktura angeschlossen.
    Dann werde ich mal sehen, das MySQL aktualisiert wird.
     
  4. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    17. August 2016
    Beiträge:
    120
    Danke erhalten:
    22
    Danke vergeben:
    17
    Hallo barbara,

    wenn Faktura-XP angeschlossen ist, unsere "alte" GX2-Schnittstelle verwendet wird und du ein Update machen musst, kannst unser Feld rauswerfen, was dann allerdings aktuell nicht gehen wird ist der Artikel-Upload, sprich das Aktualisieren von Artikeln aus der GX2-Schnittstelle heraus.

    Info zum Feld "ts_fxp": Lang vor meiner Zeit bei Faktura-XP wurde dieses Feld erfunden, da ohne Timestamp-Feld ein Aktualisieren in Tabellen nicht möglich war. Wie das Timestamp-Feld heißt spielt eigentlich keine Rolle, hauptsache eins ist da. Da es damals keine Notwendigkeit gab eins hinzuzufügen, wurde es von uns hinzugefügt.
    Welche Tabellen davon betroffen sind findest du im Skript "TimeStamp_To_Shop.sql" im System-Verzeichnis deiner Faktura-XP Installation.

    Die Schnittstelle mit direkter Datenbankverbindung, also sprich die "GX2-Schnittstelle" wird nicht mehr weiter entwickelt, solange du/ihr mit einem GX3 da noch ohne Fehler drauf zugreifen könnt: Dreimal auf Holz geklopft. Wenn nicht: Wir haben extra eine GX3-Schnittstelle. Um mal frei unseren Wilken zu zitieren "Es wird der Tag kommen, wo wir die Datenbank umstrukturieren, da werden diejenigen die auf der Datenbank rumreiten böse vom Pferd fallen"


    In der der GX3-Schnittstelle verwenden wir (fast) ausschließlich die Gambio-API.
    Ausnahmen: Manufacturers, OrderStatus, Varianten
    Hierfür wird ein kleiner Connector von uns auf dem Server benötigt der die Daten aus der Datenbank direkt holt. Der kleine Knecht wird demnächst aber auch obsolet sobald die notwendigen Änderungen in der Gambio-API vorhanden und wir die in der Schnittstelle nachgepflegt haben. Für Rückwärtskompatibilität bis 3.0.0.0 bleiben die Aufrufe und Zugriffsmöglichkeiten auf den Knecht aber erhalten.


    #Edith:
    Aber um auch den GX2-Usern noch ein wenig zu helfen hab ich mal einen Patch für ein kommendes Faktura-XP Update erstellt. Ob der übernommen wird kann ich nicht garantieren, werde mein bestes geben gute Argumente zu finden wieso wir noch was an der GX2-Schnittstelle ändern sollten ;)

    der Patch würde neben der harten Prüfung auf "ts_FXP" dann zusätzlich in einer zweiten Stufe prüfen ob überhaupt in der Tabelle ein TimeStamp-Feld vorhanden ist. Wird dort eins gefunden, bleibt die Schnittstelle still, und es sollte auch der Artikel-Upload (Artikelaktualisierung) wieder gehen.

    Wie gesagt: Ich kanns nur anbieten, ich hoffe ich find ein gutes Argument sollte gefragt werden wieso. Wenns geklappt hat findet ihr die Info in der Versionshistorie auf (Link nur für registrierte Nutzer sichtbar.) in dem dann kommenden Update.
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Hallo Daniel,

    vielen Dank für die Ausführung und Aufklärung. :)

    Bei dem Update handelte es sich um einen Kundenshop, der inklusive der Verbindung zu FakturaXP auf den aktuellen Stand gebracht werden sollte.
    Nach dem Löschend es Timestamp hat das Shop-Update problemlos funktioniert.
    Um die Schnittstelle hat sich Faktura gekümmert, sollte also auch laufen :)