* Wechsel von Xentral zu OpenXE

  • Dieser Artikel beschreibt den Wechsel von Xentral zu OpenXE.
    Mit dieser Anleitung wird beschrieben, wie eine bestehene Xentral Installation zu OpenXE migriert werden kann.


    (Stand August 2024)

    1 OpenXE installieren

    Eine vollständige OpenXE Installation nach diesen Anleitungen durchführen:

    Datenbankname für die Beschreibung hier: "openxe_database". Falls der Datenbankname abweicht, muss dies bei den weiteren Schritten berücksichtigt werden.

    2 OpenXE Upgrade

    OpenXE auf den neuesten Stand bringen (System und Datenbank): Upgrade von OpenXE


    Alternativ über die Konsole im Ordner upgrade: ./upgrade.sh -do

    3 Xentral-Daten-Export

    Die Daten aus Xentral kann man mithilfe des Moduls "ftpbackup" erstellen (https://*******.xentral.com/app/x1?module=ftpbackup&action=list)



    Falls das nicht verfügbar ist, kann das Backup beim Xentral-Support angefragt werden.


    Man erhält zwei Dateien:

    • mysqldump.sql
      • Enthält die Datenbank, wird in den weiteren Schritten angepasst und in OpenXE importiert
    • userdata.sql
      • Enthält alle Dateianhänge und das PDF-Archiv

    4 Xentral-Datenbank-Datei anpassen

    4.1 Grundeinstellungen

    Im Xentral-Datenbank-Export (mysqldump.sql-Datei) müssen folgende Zeilen vorne angestellt werden:

    SET SQL_MODE='ALLOW_INVALID_DATES';

    SET SESSION innodb_strict_mode=OFF;


    Folgende Zeilen müssen entfernt werden (Am Anfang der Datei und am Ende):

    CREATE DATABASE 'xyz1234'

    USE 'xyz1234' DATABASE ...


    Da die Datei sehr groß ist, geht dies am Besten auf der Konsole mit nano.

    4.2 Fremdschlüssel entfernen

    Alle Zeilen aus der mysqldump.sql entfernen die mit 'CONSTRAINT `tablenamexyz1234`' enthalten, Komma in der Zeile davor entfernen nicht vergessen. (17 Zeilen)


    PRIMARY KEY (`id`),

    KEY `bookmark_user_id_foreign` (`user_id`),

    CONSTRAINT `bookmark_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE

    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

    /*!40101 SET character_set_client = @saved_cs_client */;


    --->


    PRIMARY KEY (`id`),

    KEY `bookmark_user_id_foreign` (`user_id`)

    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

    /*!40101 SET character_set_client = @saved_cs_client */;


    Mit nano:

    • Suchen; STRG-W
    • Zeile löschen: STRG-K

    4.3 Supersearch-Daten entfernen

    Alle Zeilen aus der mysqldump.sql enfernen zwischen folgenden Einträgen (u.g. Zeilen ebenfalls entfernen):


    -- Dumping data for table `supersearch_index_item`


    /*!40000 ALTER TABLE `supersearch_index_item` ENABLE KEYS */;

    UNLOCK TABLES;

    5 Datenbank importieren

    Im nächsten Schritt wird der Xentral-Datenbank-Export über die frisch installierte OpenXE-Datenbank geschrieben.


    sudo mariadb openxe_database < mysqldump.sql


    Für openxe_database den Namen der Zieldatenbank eingeben gemäß OpenXE-Installation.

    6 Datenbank-Upgrade durchführen mit Schlüssel-Bereinigung

    Über die Konsole im Ordner upgrade: ./upgrade.sh -db -v -do -drop_keys

    7 PDF-Dateien anpassen (optional)

    8 OpenXE mit importieren Xentral-Daten (Xentral 24)

Share

Comments 3

  • Hallo,
    ich habe einen Ähnlichen Fehler wie Rene, bricht das Datenbank Update mit Folgender Fehlermeldung ab:


    Code
    PHP Fatal error:  Uncaught mysqli_sql_exception: Duplicate entry '001-107' for key 'seriennummer_artikel' in /var/www/html/OpenXE-V.1.12/upgrade/data/upgrade.php:478


    Die doppelten Seriennummern habe ich vor dem Export aus Xentral alle gelöscht.

    Danke und Grüße,
    Dominik

  • Leider tritt bei der Migration bei mir ein Fehler auf:

    mysqli_sql_exception

    6→mysqli_query() /var/www/html/upgrade/data/upgrade.php:478

    Duplicate entry '4273-6' for key 'eigenschaft_artikel_unique'

    Wie kann ich das lösen?

  • "/var/www/html/userdata löschen


    Xentral-20-userdata von /var/www/userdata verschieben nach /var/www/html/userdata"


    Der Part fehlt noch in der Dokumentation, oder?