digedag / cfc_league

Sportsmanagement for TYPO3 (Backend)
3 stars 8 forks source link

TYPO3 Upgrade von 4.7 auf 6.2 und Umstellung von DAM auf FAL #22

Closed bastians closed 7 years ago

bastians commented 8 years ago

Ich bin dabei unser doch schon sehr altes TYPO3 von 4.7 auf 6.2 upzugraden. In einem der Updates Extension zum Thema DAM und FAL gab einen Hinweis, dass man die Anpassung nich für TYPO3-Upgrades verwenden kann. Ist das nach wie vor so?

digedag commented 8 years ago

Es gibt für T3sports kein spezielles Upgrade-Script. Die Konvertierung der DAM-Daten muss mit den üblichen Tools erledigt werden. Meine Empfehlung wäre mkdam2fal. Das ist ein Fork der Extension dam2fal, die einige Bugfixes und Erweiterungen enthält.

Die Umstellung aber unbedingt vorher einmal ausprobieren. Das klappt fast nie beim ersten Versuch!

bastians commented 8 years ago

Ok, danke. Du hattest in deinem Beitrag hier http://www.system25.de/hauptmenu/weblog/artikel/article/11/t3sports-nun-auch-f.html nur geschrieben:

Zum Glück ist rein technisch der Unterschied zwischen DAM und FAL nicht so extrem groß, so daß die Umstellung am Ende recht einfach war. Allerdings habe ich bei der Umstellung einige Referenzen verändert. Wenn Bilder bspw. bisher einer DB-Spalte dam_images zugeordnet waren, dann heißt die Spalte für FAL nun t3images.

Durch diese Umstellung in der Struktur ist ein Upgrade vom 4er TYPO3 auf die 6er Version derzeit noch nicht möglich. Zwar erkennt meines Wissens TYPO3 beim Upgrade die DAM Referenzen und stellt sie auf FAL um, durch meine Änderungen werden aber natürlich die falschen Spalten verwendet. Hier ist im Nachgang noch ein weitere Update in der Datenbank notwendig, der die Referenzen korrigiert.

Muss ich dann noch manuell Hand anlegen?

digedag commented 8 years ago

In mkdam2fal kann man die Referenzen bei der Umstellung ändern. Man muss natürlich wissen, wie das Mapping aussieht. Ich hab die Infos aus der TCA hier mal für alle Tabellen aufgelistet:

Tabelle Feldname Referenz DAM Referenz FAL
tx_cfcleague_club Logo dam_images logo
tx_cfcleague_competition Logo logo logo
tx_cfcleague_games Bilder dam_images t3images
tx_cfcleague_games Dokumente 1 dam_media dam_media
tx_cfcleague_games Dokumente 2 dam_media2 dam_media2
tx_cfcleague_profiles Bilder dam_images t3images
tx_cfcleague_stadium Logo logo logo
tx_cfcleague_stadium Bilder pictures pictures
tx_cfcleague_team_notes Media media media
tx_cfcleague_teams Logo relation_field_or_other_ident t3logo
tx_cfcleague_teams Bilder dam_images t3images

In der Tabelle Teams ist das Logo-Feld gemeint, in dem man ein Logo ohne den Verein direkt zuordnen kann. Das wurde leider ohne Referenz-Identifier angelegt. Kann sein, daß auf mkdam2fal nicht direkt damit umgehen kann. Diese Referenzen müssten dann manuell korrigiert werden.

bastians commented 8 years ago

Ok, danke. Das wird was geben... ;)

bastians commented 8 years ago

Ich komme leider nicht über den Step 1 hinaus, da nicht alle Bilder indexiert werden, mir fehlen 4. Kann ich da was tun?

digedag commented 8 years ago

Bitte ein Ticket bei mkdam2fal einstellen. Vermutlich siehst du ja nicht, welche Bilder betroffen sind...

bastians commented 8 years ago

Ok, erledigt. Dann schließe ich den mal. Danke!

bastians commented 8 years ago

Doch noch eine Frage:

Diese Referenzen müssten dann manuell korrigiert werden.

Manuell heißt, in jeden Datensatz rein und ändern? Oder bekomm ich das auch in der Datenbank irgendwie hin?

digedag commented 8 years ago

Probier es mal damit: UPDATE tx_dam_mm_ref SET ident='t3logo' WHERE ident='' AND tablenames='tx_cfcleague_teams'

bastians commented 8 years ago

Hmm, leider "0 Datensätze betroffen." :(

bastians commented 8 years ago

Ich habe nun nochmals etwas herumgespielt, leider ohne Erfolg. Hast du noch Ideen? Mein Problem ist wohl auch eher, dass teilweise das Mannschaftsfoto eines Teams nun als Logo dargestellt wird: http://mig.fvloechgau.de/index.php?id=134&cfc_league_fe%5BmatchId%5D=20201

digedag commented 8 years ago

Wenn das SQL-Statement von oben keine Datensätze angepasst hat, dann bedeutet das, daß du im Team kein Logo direkt zugeordnet hast. Du wirst also immer die Logos aus dem Verein verwenden. Das ist ja in Ordnung!

Wenn jetzt ein Mannschaftsfoto als Logo verwendet wird, dann ist das ein Problem, daß mit mkdam2fal nicht behoben werden kann. In der Team-Tabelle wird das Vereinslogo mit der UID der Datei gespeichert. Da ist immer noch die DAM-UID drin. Sie muss noch durch die FAL-UID ersetzt werden. Du kannst ja mal in der Tabelle tx_dam nachschauen. Da müsste es eine Spalte geben, in der die UID des neuen FAL-Datensatzes steht. Wie heißt die Spalten? (Ich hab leider jetzt keinen Zugriff auf einen entsprechende Umgebung...)

bastians commented 8 years ago

Danke, ich habe mal geschaut. falUid müsste die Spalte heißen, oder?

bastians commented 8 years ago

Also irgendwie scheint es da noch mehr zerschossen zu haben. Im Backend steht beim Logo, dass er den Wert nicht finden kann, angezeigt wird bei einem Team plötzlich ein Bild eines Spielers. Und beim Alternativen Team-Logo wird da Mannschaftsfoto angezeigt, bei den Bildern im Team-Datensatz ist dagegen gar keins mehr verknüpft.

160815-typo3-backend-t3sports
bastians commented 8 years ago

Und bei der Migration von DAM zu FAL kam es auch zu einigen Fehlern:

22:17:21 2016-08-15;noForeignSourceFound or deleted;tx_cfcleague_games tx_cfcleague_games;dam_images t3images;1011;47;
22:17:21 2016-08-15;noForeignSourceFound or deleted;tx_cfcleague_games tx_cfcleague_games;dam_images t3images;1015;50;
22:17:21 2016-08-15;noForeignSourceFound or deleted;tx_cfcleague_games 
digedag commented 8 years ago

Ich hab mal deine lange Fehlerliste gelöscht. Die ist nicht hilfreich! :wink: Die Fehler, die du da auflistest, kommen grundsätzlich bei nahezu jeder Umstellung vor. Denn dam2fal prüft alle Referenzen in der Referenztabelle. Und dort sammeln sich schon mal fehlerhafte Datensätze an. Beim Löschen von Daten wurde in DAM die Referenz-Tabelle nicht aufgeräumt. Wenn du bspw. mal ein Spiel gelöscht hast, an dem Bilder dran hingen, dann bleiben die Referenzen in der Datenbank. Und das wäre dann ein Eintrag in deiner langen Liste. Du kannst jetzt nur mal prüfen, ob die Fehler im Einzelfall berechtigt sind. In der ersten Zeile geht es um eine Referenz auf das Spiel mit der UID 1011. Das DAM-Bild hat die UID 50. Schau einfach mal nach, ob das Spiel noch in der Datenbank ist.

Davon abgesehen. Den falschen Wert in Team Logo hatte ich ja schon erklärt. Das kann noch nicht funktionieren, weil da noch die DAM-UID drin steht. Den falschen Wert beim alternativen Team-Logo kann ich mir aber nicht erklären. Auch da müsstest du dir mal anschauen, welche Referenz da konkret verwendet wird. Der Identifier würde mich interessieren. Ferndiagnosen sind aber immer nur schwer möglich...

Zum Update des Team-Logos. Sichere zunächst mal den aktuellen Logowert:

ALTER TABLE tx_cfcleague_teams ADD logo_dam INT( 11 ) NOT NULL ;
UPDATE tx_cfcleague_teams SET logo_dam = logo;

Wenn was schief geht, hast du in logo_dam jetzt zur Sicherheit die alte DAM-UID drin. Nun schreib die neue FAL-UID rein:

UPDATE tx_cfcleage_teams t
JOIN tx_dam d ON d.uid = t.logo_dam
SET t.logo = d.falUid;

Danach sollte es in der Logo-Auswahl besser aussehen. Zumindest dann, wenn im Verein auch jetzt schon Logos richtig zugeordnet sind. Du hast bisher immer nur geschrieben, was alles nicht funktioniert. Die Dinge, die funktioniert haben, sind ja auch nicht uninteressant...

bastians commented 8 years ago

Team-Logo: Die SQL-Befehle habe ich ausgeführt, jetzt sind den Teams teilweise ganz andere Bilder zugewiesen. Was ich seltsam finde: Ich habe keinem einzigen Team ein eigenes Logo hinterlegt, noch nie. Eigentlich müsste er sich immer die Werte vom Verein ziehen. Kann man Referenzen nicht irgendwie einfach löschen, sodass dann als Fallback der Verein greift?

Alternatives Team-Logo / Mannschaftsbilder Ich habe mich bei der Migration von DAM zu FAL eigentlich an die Tabelle von dir gehalten, allerdings vermute ich, dass ich alternatives Team-Logo und Mannschaftsbild vertauscht habe bzw. dass es kein Feld für das alternative Team-Logo gab, da ich das Feld bisher auch nie verwendet habe. Ich teste das beim nächsten Testlauf der Migration nochmals.

Was bihser klappt? Die Personenbilder passen, ebenso die Sponsorenbilder ;)

Danke für deinen Support!

digedag commented 8 years ago

Du musst hier wirklich mal an einzelnen Beispielen prüfen, welche Zuordnungen genau gemacht wurden. Aus der Ferne kann ich das nicht nachvollziehen.

Passen die Logos die im Verein zugeordnet? Falls nein, welche Bilder sind das jetzt? Welche DAM-Bilder gehörten dazu? Wo sind die DAM-Logos in FAL hingewandert. Nimm dir einen konkreten Verein raus und schreibt die UIDs auf. Such auch die Referenzen in der Tabelle tx_dam_mm_ref. In der Spalte uid_local steht immer die UID des DAM-Bildes. In uid_foreign steht die UID des Zieldatensatzes, also z.B. des Vereins. Was es konkret ist, erkannt man in den Spalten tablenames und ident. Der Wert in der Spalte ident wird bei der Konvertierung zu FAL nach der Vorgabe in der Mapping-Tabelle oben umgewandelt. Du solltest also jede Referenz nun auch in der sys_file_reference finden. Auch dort zeigt die Spalte uid_local auf die UID des FAL-Bildes in sys_file. In uid_foreign steht wieder die UID des Zieldatensatzes. Was das konkret ist, findest du in in den Spalten tablenames und fieldname. In fieldname landet der umgemappte ident-Wert aus DAM.

Such dir ein Beispiel raus, was funktioniert hat und schreib dir alles auf. Dann machst du das selbe für ein fehlerhaftes Beispiel. Irgendwo wirst du dann schon den Fehler finden.

Warum du jetzt Bilder im alternativen Team-Logo hast, kann ich mir auch nicht erklären. Eventuell hängt es aber damit zusammen, daß da vorher in ident kein Wert drin war... Aber auch hier mal wirklich die Herkunft der Daten in der Datenbank nachstellen.

Das ist mühsam, aber der einzig zielführende Weg...

bastians commented 7 years ago

Ich habe das Upgrade nun hinbekommen. Das Problem war das, dass in der teams-Tabelle in der Spalte logo teilweise die ID des DAM-Eintrages eingetragen war. Die wurde immer dann gesetzt, wenn man einem Team einen Verein zugewiesen hat, der ein Logo hinterlegt hat. Dann wurde die ID des Logos in die Tabelle geschrieben.

Was im TYPO3-Backend komisch war: Ich habe bei vielen Teams einen Verein angegeben, der ein Logo zugewiesen hat. Hat man ein solches Team bearbeitet, dann wurde angezeigt, dass ein Verein zugewiesen ist, das Logo wurde aber nicht angezeigt sondern erst, wenn man den Datensatz nochmals gespeichert hat. Erst dann wurde auch die ID in die teams-Tabelle geschrieben.

Daher waren auch fast nur unsere eigenen Teams betroffen, da diese oft gespeichert werden.

Was habe ich gemacht? Vor dem Upgrade bei allen Teams den Wert "0" in der Spalte eingetragen. Nun passt alles.

Die Frage ist: Wieso ist das passiert? Sind meine Daten irgendwie kaputt?

digedag commented 7 years ago

Ich hab nun tatsächlich auch mal eine DAM2FAL Migration für T3sports machen können. Und dabei bin ich natürlich auch auf die Probleme beim Team-Logo gestoßen. Das weiter oben vorgeschlagene Update-Query war falsch. Im logo Feld steht nämlich nicht die UID der FAL-Datei, sondern die UID der Referenz zwischen Verein und FAL-Datei. Damit wird das Statement etwas komplexer. Falls es doch mal noch jemand benötigt, hier die Lösung:

UPDATE tx_cfcleague_teams t
JOIN tx_dam d ON d.uid = t.logo_dam
JOIN sys_file_reference r ON r.uid_local = d.falUid 
  AND r.tablenames = 'tx_cfcleague_club'
  AND r.uid_foreign=t.club
  AND r.fieldname = 'logo'
SET t.logo = r.uid;
bastians commented 7 years ago

@digedag Kann ich das im Nachgang noch ausführen? :)

bastians commented 7 years ago

@digedag Bringt es was, wenn ich das nun noch ausführe?

digedag commented 6 years ago

@bastians Grundsätzlich kannst du das jederzeit noch machen. Kaputt gehen, kann durch die Query eigentlich nichts.