SQL Befehle

Löschen von alten Einträgen

Grundsatz: Es darf im gesamten System kein Alias doppelt vorkommen!! Das gilt für alle Aliase aus Artikel und Kategorie.

Im BE gelöschte Einträge werden aus der DB physikalisch nicht gelöscht, sondern lediglich als gelöscht gekennzeichnet. So besteht die Möglichkeit gelöschte Einträge über phpMyAdmin wieder sichtbar machen zu können.
Störend wirken kann dieses Verhalten bei den Aliaswerten von Kategorie und Artikeln. Wurde z.B. die Kategorie “Kontakt” mit dem Aliasnamen “kontakt” schon einmal aus dem System gelöscht und wird danach ein zweites mal angelegt, erstellt das System automatisch den Aliasnamen “kontakt-1”, da “kontakt” in der DB noch existiert (jedoch nicht mehr im BE).

Bis ~V1.4.2 r379

Um so ein Verhalten zukünftig zu vermeiden sollte man vor dem Löschen einer(s) Kategorie / Artikels den Aliasnamen in einen unsinnigen Namen umbenennen und einmal abspeichern (z.B. kontakt_dfgg9897gfd).

Ab ~V1.4.2 r380

Wenn der ursprüngliche Artikel in einer neueren Version >= 1.4.4 gelöscht wurde, wird an den Alias das Löschdatum mit Uhrzeit angehängt.
Z.B. wird aus dem gelöschten Alias-Namen “impressum” der Alias “impressum_del-20100304131315” (2010/03/04 13:13 Uhr 15 Sec.) Die Daten bleiben in der DB erhalten, sind jedoch als gelöscht markiert (article_deleted = 9). (Also kann dieser Artikel zu jeder Zeit via phpMyAdmin zurückgeholt werden (article_deleted = 0)).


Wird nun ein neuer Alias “impressum” verlangt, legt das System in der Automatik den Alias “impressum-1” an. Dieser Alias kann aber nun manuell umbenannt werden in “impressum”. (vorausgesetzt der ürsprüngliche Artikel ist im System gelöscht worden).

Das automatisch +1 gesetzt wird hat Oliver wahrscheinlich deshalb gemacht um einen Konflikt beim Regenerieren der Artikel/Kategorien zu vermeiden, da der als gelöscht markierte Eintrag ja noch den eigentlichen Alias “impressum” trägt.

Wenn an dieser Stelle bei einem Eingriff in die DB nicht aufgepasst wird, kann es zu doppelten Aliase kommen.
→ Die Auswirkungen in so einem Fall kenne ich bisher noch nicht.

Google Code r380

Um alle im BE gelöschten Einträge auch aus der DB zu entfernen, verwende folgende Prozeduren mit dem SQL-Tool phpMyAdmin:

Für gelöschte Artikel:

DELETE FROM phpwcms_article WHERE article_deleted=9;
DELETE FROM phpwcms_articlecontent WHERE acontent_trash=9;

Für gelöschte Strukturebenen (Kategorien):

DELETE FROM phpwcms_articlecat WHERE acat_trash=9;

Für gelöschte Dateien/Bilder

Dateien und Bilder bitte nur aus der DB löschen, wenn vorher im BE der Papierkorb in der Dateizentrale geleert und unter Admin → Dateien final löschen ausgeführt wurde!!!

DELETE FROM phpwcms_file WHERE f_trash=8;
deutsch/technik/datenbank/sql-befehle.txt · Last modified: 2010/03/04 14:09 by Knut Heermann (flip-flop)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0