Avatar

Update von Version 2.2.8 zu 2.4.13 durch Neuaufbau (German / Deutsch)

by Auge ⌂, Friday, December 07, 2018, 11:09 (1938 days ago) @ Hartmut F

Hallo

ACHTUNG: wegen des soeben gemeldeten Bugs der Version 2.4.15 führe bitte kein Update auf diese Version durch! Warte bitte auf den Fix mit Version 2.4.16.

ich habe versucht, unser Forum von Version 2.2.8 nach 2.4.13 upzudaten.

Wegen der großen Zahl der nötigen Updates zwischendurch und den von Euch dazu gemeldeten Problemen …

Davon ausgehend, dass die aktuelle Version 2.4.15 in Bezug auf den Updateprozess fehlerfrei ist, sind nur zwei Schritte notwendig. Der „Zwangsschritt“ zur Version 2.3.5 und von dort aus direkt zu 2.4.15.

… versuchte ich, ein ganz neues Forum mit 2.4.13 aufzusetzen und dann die aktuellen Daten zu importieren.

Zwischen alt und neu gab es aber Änderungen beim Datenschema, zumindest bei:

entries
entries_cache

userdata
userdata_cache

Bis Version 2.3.5:

Zwischen 2.2.8 und 2.3.5 gab es bis auf die neue Einstellung stop_forum_spam mit dem Vorgabewert 0 keine Änderung. Seit der 2.3.5 gab es folgende Änderungen in der Struktur.

Version 2.3.6:

- Das Feld mlf2_userdata.last_login darf nun den Wert NULL enthalten.

ALTER TABLE mlf2_userdata CHANGE last_login last_login TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP

Version 2.3.7:

- Das Feld mlf2_settings_table.temp_block_ip_after_repeated_failed_logins enthält nun die Anzahl der Minuten, die eine IP bei einem mutmaßlichen Angriff ausgesperrt war.

UPDATE mlf2_settings_table SET VALUE = 10 WHERE name = temp_block_ip_after_repeated_failed_logins AND VALUE > 0

Vorgabewert ist, wie vorher im Code festgelegt 10, der Wert 0 heißt nach wie vor, dass die Funktion abgeschaltet ist. War vorher 0 = aus, 1 = an.

Version 2.4:

- drei neue Tabellen (mlf2_bookmarks, mlf2_read_entries, mlf2_temp_infos)
- Die Einstellungstabelle wird mit strikterer Struktur neu angelegt, um Doppelungen von Einstellungen bei Umzügen zu vermeiden.
- Für die geänderte Behandlung von als gelesen geltenden Postings wird die Einstellung read_state_expiration_date neu eingeführt. Der Wert wird in Version 2.4.3 wieder entfernt und mit anderen Schlüsseln ersetzt. Mit einer aktuellen Version (sowohl Installation als auch Update) solltest du diesen Einstellungsschlüssel nicht mehr vorfinden.
- Die Übertragung der Werte aus der Tabelle mlf2_userdata in die neue Tabelle mlf2_read_entries kannst du, wenn du Code lesen kannst, im Updateskript nachvollziehen.

INSERT INTO mlf2_settings_table (name, VALUE) VALUES ('read_state_expiration_date', '150') ON DUPLICATE KEY UPDATE VALUE = VALUE
ALTER TABLE mlf2_userdata DROP COLUMN entries_read

Version 2.4.2:

- Mit Version 2.4.2 wird die Einstellungstabelle erneut neu erstellt, weil die Änderungen in 2.4 nicht korrekt durchgeführt wurden. Nachzuvollziehen ist dies im Updateskript.

Version 2.4.3:

- Das Feld mlf2_userdata.user_name erhält eine neue Sortierung (utf8_bin), um bei der Prüfung auf schon vorhandene Benutzernamen zum Beispiel "Annchen" von "Ännchen" zu unterscheiden.
- Für einige Tabellen werden zusätzliche Indexe definiert, um Abfragen (erheblich!) zu beschleunigen.

ALTER TABLE mlf2_userdata MODIFY user_name VARCHAR(255) COLLATE utf8_bin
ALTER TABLE mlf2_entries ADD INDEX(`spam`)
ALTER TABLE mlf2_entries ADD INDEX(`user_id`)
ALTER TABLE mlf2_entries ADD INDEX(`time`)
ALTER TABLE mlf2_entries ADD INDEX(`last_reply`)
ALTER TABLE mlf2_read_entries ADD INDEX(`user_id`)
ALTER TABLE mlf2_read_entries ADD INDEX(`posting_id`)
ALTER TABLE mlf2_userdata ADD INDEX(`user_type`)
ALTER TABLE mlf2_userdata ADD INDEX(`user_name`)
INSERT INTO mlf2_settings (`name`, `value`) VALUES ('read_state_expiration_method', '0')
INSERT INTO mlf2_settings (`name`, `value`) VALUES ('read_state_expiration_value', '500')
DELETE FROM mlf2_settings WHERE name = 'max_read_items'
DELETE FROM mlf2_settings WHERE name = 'read_state_expiration_date'
 

Version 2.4.7:

- Für die mit Version 2.4 eingeführten Lesezeichen werden Tags eingeführt. Die verwaltung erfolgt in der Tabelle mlf2_bookmark_tags.
- Die Tags der Psotings werden in einer separaten Tabelle namens mlf2_entry_tags verwaltet.
- Die Tags selbst werden für beide Fälle in der Tabelle mlf2_tags gespeichert.
- Der Code zur Übertragung der Tags aus der Tabelle mlf2_entries in die Tabelle mlf2_tags ist im Updateskript nachzulesen.
- Das Feld mlf2_entries.tags fällt somit weg.

ALTER TABLE mlf2_entries DROP COLUMN tags

Version 2.4.10:

- Neue Felder in der Tabelle mlf2_userdata zur Speicherung der Zustimmung zur Datenschutzerklärung und zu den Benutzungsbestimmungen (Terms of Use)
- neue Einstellungen in mlf2_settings für die Datenschutzerklärung analog zu denen für die Benutzungsbestimmungen (Terms of Use)

ALTER TABLE mlf2_userdata ADD tou_accepted DATETIME NULL DEFAULT NULL, ADD dps_accepted DATETIME NULL DEFAULT NULL
INSERT INTO mlf2_settings (name, VALUE) VALUES ('data_privacy_agreement', '0')
INSERT INTO mlf2_settings (name, VALUE) VALUES ('data_privacy_statement_url', '')

Version 2.4.11:

- Die neuen mit Version 2.4.10 eingeführten Felder in der Tabelle mlf2_userdata hatte ich im Installationsskript vergessen, weswegen sie nur für jene Betreiber, die die Version 2.4.10 neu installiert hatten, im Update erzeugen und ein paar Nacharbeiten durchführen musste. Wer 2.4.10 schon als Update bezogen hatte, war davon nicht betroffen.

Version 2.4.14:

- Einführung der Tabelle mlf2_subscriptions zur Verwaltung der Postingabonnements der jeweiligen Autoren.
- Der Code zur Übertragung der vorhandenen Abonnements aus der Tabelle mlf2_entries in die Tabelle mlf2_subscriptions ist im Updateskript zu besichtigen.

Schlussfolgerung

Mit der Übertragung der Daten aus der alten Datenbank in die Datenbank einer MLF-2.4.15-Installation unter weglassen der abgeschafften Felder gehen nur jene Daten verloren, die bei einem Update aus einer der schon vorher vorhandenen Tabellen in eine neue Tabelle umgezogen wurden. Das betrifft die Tags von Postings (haben eh nur Mods und Admins setzen können, selten genutzt) und Postingabonnements.

Wenn du diese Daten nicht verlieren willst und du noch die alte Datenbank in ihrer alten Struktur der Version 2.2.8 hast, führe das Update auf die Version 2.3.5 aus, und springe danach mit dem neuen Updateskript update_2.3.5-2.4.php auf die aktuelle Version 2.4.15. Vergiss dabei bitte nicht, vor diesem letzten Update die Datei config/VERSION hochzuladen.

Veraltete Felder wegzulassen, ist kein Problem, aber woher bekomme ich den Inhalt für die neuen Felder in diesen Tabellen?

Den gibt es – bis auf Ausnahmen – einfach nicht. Das ist bei einem „normalen“ Update grundsätzlich auch nicht anders, außer bei den Feldern, die aus alten Daten heraus generiert werden. Das trifft, wie poben schon geschrieben, auf die Gelesen-Markierung, die Tags und die Abonnements von Postings zu. Die waren früher Teil der Tabelle mit den Benutzerdaten bzw. den Daten der Postings selbst und sind nun in eigenen Tabellen gespeichert.

Und: Wenn ich als Admin eingeloggt die Settings ändere, sagt er zwar "Settings saved" speichert aber nichts. Weder sind die Änderungen im Forum zu sehen, noch auf der Settings-Seite trotz clear cache und enabled weggenommen.

Frage: wieviele Einträge hat die Settings-Tabelle? Ein solches Verhalten ist bisher immer dann aufgetreten, wenn in der Tabelle mlf2_settings die Einträge doppelt vorlagen. Schaue bitte mit phpMyAdmin (oder dem vergleichbaren Tool, das dir dein Hoster bereitstellt) nach, ob sich die Anzahl der Einträge in der Tabelle erheblich von etwa 118 unterscheidet.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!


Complete thread:

 RSS Feed of thread