[gelöst] Kommentare einem anderen Benutzer zuweisen
am 12.07.2014 - 10:35 Uhr in
Hallo,
Ich versuche, sämtliche Kommentare eines Benutzers auf einen anderen Benutzer zu übertragen.
Hintergrund:
Ich habe eigentlich recht erfolgreich eine Seite von phpbb3 auf Drupal 7.28 migriert. Aus irgendwelchen Gründen wird dabei jedoch stets ein Benutzer (mit der ID 2) "verschluckt" und sämtlicher content dem Drupal Benutzer mit der ID 1 zugewiesen. Wie dem auch sei. Ich habe einfach einen neuen Benutzer erstellt und sämtliche Inhalte des admins mit dem Modul "Node Adoption" auf den neuen Benutzer übertragen. Das hat auch sehr gut funktioniert.
Das Problem dabei ist allerdings, dass das erwähnte modul nur Nodes transferiert und keine Kommentare. Ein vergleichbares Modul für Kommentare habe ich nicht gefunden.
Gibt es eine Möglichkeit, sämtliche Kommentare, die ein Benutzer erstellt hat, einem anderen Benutzer zuzuweisen? Ich gehe davon aus, dass dies mit einem entsprechenden SQL Befehl möglich sein sollte. Allerdings fehlen mir diesbezüglich einfach die Kenntnisse. Vielleicht könnt Ihr mir weiterhelfen. Für jede Hilfe möchte ich mich bereits an dieser Stelle recht herzlich bedanken.
- Anmelden oder Registrieren um Kommentare zu schreiben
Das müßte mit diesen beiden
am 12.07.2014 - 11:33 Uhr
Das müßte mit diesen beiden Datenbank-Befehlen getan sein:
UPDATE comments SET uid = WHERE uid = ;
UPDATE node_comment_statistics SET last_comment_uid = WHERE last_comment_uid = ;
Bei einer Standardinstallation gibt es nur drei Tabellen, die den Begriff comment im Namen haben.
Davon enthalten diese beiden einen Bezug auf die uid.
Ich bin momentan nicht sicher, ob es Module gibt, die zusätzliche Comment-Tabellen mit user-id haben.
Wenn es also bei Dir noch Tabellen mit comment im Namen gibt, die auf ein Modul hinweisen, daß Du zusätzlich installiert hast, dann müßte man die näher untersuchen.
Bitte auf jeden Fall ein Backup der Datenbank machen vor solchen Manipulationen.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Vielen Dank für die rasche
am 12.07.2014 - 12:31 Uhr
Vielen Dank für die rasche Hilfe!
Ich habe das gleich ausprobiert und in der ersten Zeile die ID des admin (1) sowie in die zweite Zeile die des neuen Benutzers eingetragen. Bekomme dann aber folgende Fehlermeldung
UPDATE comments SET uid = WHERE uid =1;
MySQL meldet: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE uid = 1' at line 1
Irgendetwas mache ich wohl falsch
Hmm...hast Du das wirklich so
am 12.07.2014 - 20:30 Uhr
Hmm...hast Du das wirklich so geschrieben?
Dann fehlt da die UID wo ich ??? geschrieben habe.
UPDATE comments SET uid = ??? WHERE uid = 1;
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Vielen vielen Dank, ich
am 12.07.2014 - 20:16 Uhr
Vielen vielen Dank,
ich glaube ich habe es nun kapiert :) Zwar bekam ich folgende Meldung:
MySQL lieferte ein leeres Resultat zurück (d.h. null Datensätze)
Allerdings waren danndoch einige hundert Datensätze betroffen und ein erstes Test zeigt, dass die Kommentare dem neuen Benutzer zugeordnet sind.
Vorsicht vor direkter DB-Manipulation und hier unnötig
am 13.07.2014 - 00:14 Uhr
Insbesondere seit Drupal 7 sind die Datenstrukturen etwas komplexer geworden und direkte Eingriffe in die Datenbank gefährlicher. Das sollte wirklich der letzte Schritt sein. Davor solle man schauen, ob es nicht Module gibt wie z.B. auch Rules und Views Bulk Operations usw., die behilflich sein können, die Daten sauber zu verändern.
In diesem Fall reicht ein einfaches Comment edit (z.B. "/comment/1/edit") als Admin und in der "Administration"-Sektion die Auswahl des anderen Users, den man als Owner ("Authored by") des Comments einsetzen möchte, wie es auch bei Nodes funktioniert.
Update: OK, hier geht es um ein Massen-Update, dann reicht natürlich nicht die einzelne Bearbeitung. Aber auf Views Bulk Operations habe ich ja schon hingewiesen und dies ist ein praktischer Massen-Berabeiter. Und wenn man mit dem nicht beikommt, würde ich vor der direkten DB-Manipulationen immer noch in einem Custom Module ein Update-Script schreiben, das sich vllt. aus der DB alle Comments lädt, aber dann die Comment-Entity-Objekte per sauberen API-Aufruf modifiziert.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: CMS Security & Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Mal ne ganz blöde Frage,
am 13.07.2014 - 13:09 Uhr
Mal ne ganz blöde Frage, Carsten.
Wie macht man mit Views Bulk Operations so einen Update auf eine user-id?
Aus den mitgelieferten Optionen in der Select-Box kenne ich nichts dgl.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Blöd ist die Frage nicht
am 13.07.2014 - 14:40 Uhr
Views Bulk Operations (VBO) und Rules bilden ein super Team. VBO kann Rules Views zugänglich machen und mit Rules kann man Components inkl. Actions erstellen, die man dann wiederum in VBO als Action nutzen kann. Und ohne Rules kann man in einem Custom Module z.B. auf ein Node-Save Operationen ausführen und dann einfach nur VBO nutzen, um ein Gruppe von Nodes noch mal zu speichern. Aber die erste Variante ist eleganter. Und immer wenn Rules nicht die nötigen Actions, Events oder Conditions bereit stellt, kann man noch eigene programmieren.
Ich würde in diesem Fall erstmal eine Rules-Componente erstellen, die als Variable ein Kommentar-Entity-Object entgegen nimmt. Dann sollte die erste Action ein Load entity by ID sein (der neue User, der als Author eingetragen werden soll). Dann kann man als nächste Action "Set a data value" benutzen und [comment:author] setzen mit dem zuvor geladenen user. Diese Rule kann dann in VBO genutzt werden.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: CMS Security & Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Danke für den Tipp mit der
am 13.07.2014 - 16:02 Uhr
Danke für den Tipp mit der Kombi aus VBO und Rules.
Das kann ich sicher auch mal gut brauchen.
Ob es für einen absoluten Anfänger leichter und sicherer zu handeln ist, als der Datenbank-Update, ist die Frage.
Wobei ich natürlich grundsätzlich vor Manipulationen in der Datenbank auch warne.
Im konkreten Fall erscheint es mir allerdings wirklich überschaubar.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Gerade ein Anfänger
am 13.07.2014 - 20:44 Uhr
neigt eher dazu direkt in der Datenbank zu manipulieren, und läuft damit Gefahr, die Datenbank zu schrotten.
Am Ende wird Drupal die Schuld gegeben.
Die Datenstruktur von Drupal ist so komplex, dass man gar nicht laut genug "FINGER WEG" sagen kann.
Wer von einfacher strukturierten CMS kommt, versteht das nicht.
Die Genialität dieser hohen Relationalität erschließt sich erst, wenn man etwas mehr mit dem System gearbeitet hat.
Sicher, jeder Anfänger tut sich erstmal schwer damit. Aber das "FINGER WEG" ist auch wichtig, um die Mühe des sich Beschäftigens Früchte tragen zu lassen.
Grüße
Ronald