Löschen von Benutzern führt zu Fehlern

  • Wenn ein Benutzer sich löscht/gelöscht wird, führt das zu einem Fehler im Calender an dem Tag an dem er Geburtstag hatte.


    Die Anzeige wird nicht aktualisiert (Anzahl) Forum und Monatsansicht (Tages und Wochenansicht ok)

    (Monatsansicht 10 Geburtstage, Wochen- und Tagesansicht 9 Geburtstage)


    Beim klicken auf die Geburtstage des Tages in der Monatsansicht kommt folgende Meldung:


    Fehlermeldung

    "Es ist ein Fehler bei der Verarbeitung aufgetreten, bitte versuche es später erneut.

    Exception ID: cd621f06042db56c6aa4a8dcac384b2468a3a6ca"



    Logdatei:

    Thu, 06 Sep 2018 10:28:52 +0000

    Message: Call to a member function getDecoratedObject() on null

    PHP version: 7.1.20-he.0

    WoltLab Suite version: 3.1.5 pl 1

    Request URI: /calendar/index.php?ajax-proxy/&t=5a6d200ce859da0960746865bf9356548fc7d42d

    Referrer: https://test.xxxxxx.de/calendar/

    User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0

    Peak Memory Usage: 2852952/402653184

    ======

    Error Class: Error

    Error Message: Call to a member function getDecoratedObject() on null

    Error Code: 0

    File: /is/htdocs/wp1191068_NEGDCYO16V/www/test/cms/lib/data/user/UserBirthdayAction.class.php (57)

    Extra Information: -

    Stack Trace: [{"function":"getGroupedUserList","class":"wcf\\data\\user\\UserBirthdayAction","type":"->","args":[],"file":"[internal function]","line":"?"},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/cms\/lib\/data\/AbstractDatabaseObjectAction.class.php","line":204,"function":"call_user_func","args":[["[redacted]","[redacted]"]],"class":"","type":""},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/cms\/lib\/action\/AJAXProxyAction.class.php","line":75,"function":"executeAction","class":"wcf\\data\\AbstractDatabaseObjectAction","type":"->","args":[]},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/cms\/lib\/action\/AJAXInvokeAction.class.php","line":104,"function":"invoke","class":"wcf\\action\\AJAXProxyAction","type":"->","args":[]},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/cms\/lib\/action\/AbstractAction.class.php","line":47,"function":"execute","class":"wcf\\action\\AJAXInvokeAction","type":"->","args":[]},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/cms\/lib\/action\/AJAXInvokeAction.class.php","line":63,"function":"__run","class":"wcf\\action\\AbstractAction","type":"->","args":[]},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/cms\/lib\/system\/request\/Request.class.php","line":83,"function":"__run","class":"wcf\\action\\AJAXInvokeAction","type":"->","args":[]},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/cms\/lib\/system\/request\/RequestHandler.class.php","line":96,"function":"execute","class":"wcf\\system\\request\\Request","type":"->","args":[]},{"file":"\/is\/htdocs\/wp1191068_NEGDCYO16V\/www\/test\/calendar\/index.php","line":9,"function":"handle","class":"wcf\\system\\request\\RequestHandler","type":"->","args":["calendar"]}]


    Aktualisieren der Anzeigen und löschen des Caches löst das Problem nur in Einzelfällen

  • Falls das wahr ist, bitte um einen soforten Fi. Bei uns löschen und melden sich die User öfter an, wenn ich dann diverse Fehlermeldung erhalte und das Forum nicht mehr nutzen kann, weil es Fehler aufgrund eines einfachen Datums gibt, kann ich das Forum morgen zu machen.


    Trau mich gerade gar nicht, den Fehler zu reproduzieren, da ich so wenig Ahnung von Programmieren habe.

  • Nachtrag:

    User wird beim Löschen anscheinend nicht konsequent aus der Tabelle wcf1_user_option_value gelöscht


    Braucht es auch nicht... denn das macht die Datenbank automatisch! Stichwort: Foreign Key

    Was mich wiederum zu der Frage führt... ist Deine Datenbank noch konsistent und hat sie alle Fremdschlüssel?


    Was bringt denn ein SHOW CREATE TABLE wcf1_user_option_value; bei Dir als Ergebnis?

  • Ergebnis:

    wcf1_user_option_value CREATE TABLE `wcf1_user_option_value` (

    `userID` int(10) NOT NULL,

    `userOption1` text COLLATE utf8mb4_unicode_ci,

    `userOption2` char(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0000-00-00',

    `userOption3` tinyint(1) NOT NULL DEFAULT '0',

    `userOption4` text COLLATE utf8mb4_unicode_ci,

    `userOption5` text COLLATE utf8mb4_unicode_ci,

    `userOption6` text COLLATE utf8mb4_unicode_ci,

    `userOption7` text COLLATE utf8mb4_unicode_ci,

    `userOption8` mediumtext COLLATE utf8mb4_unicode_ci,

    `userOption9` text COLLATE utf8mb4_unicode_ci,

    `userOption10` text COLLATE utf8mb4_unicode_ci,

    `userOption11` text COLLATE utf8mb4_unicode_ci,

    `userOption12` text COLLATE utf8mb4_unicode_ci,

    `userOption13` text COLLATE utf8mb4_unicode_ci,

    `userOption14` text COLLATE utf8mb4_unicode_ci,

    `userOption15` tinyint(1) NOT NULL DEFAULT '0',

    `userOption16` text COLLATE utf8mb4_unicode_ci,

    `userOption17` tinyint(1) NOT NULL DEFAULT '0',

    `userOption18` tinyint(1) NOT NULL DEFAULT '0',

    `userOption19` text COLLATE utf8mb4_unicode_ci,

    `userOption20` text COLLATE utf8mb4_unicode_ci,

    `userOption21` text COLLATE utf8mb4_unicode_ci,

    `userOption22` text COLLATE utf8mb4_unicode_ci,

    `userOption23` text COLLATE utf8mb4_unicode_ci,

    `userOption24` tinyint(1) NOT NULL DEFAULT '0',

    `userOption25` text COLLATE utf8mb4_unicode_ci,

    `userOption26` text COLLATE utf8mb4_unicode_ci,

    `userOption27` text COLLATE utf8mb4_unicode_ci,

    `userOption28` text COLLATE utf8mb4_unicode_ci,

    `userOption29` text COLLATE utf8mb4_unicode_ci,

    `userOption30` text COLLATE utf8mb4_unicode_ci,

    `userOption31` tinyint(1) NOT NULL DEFAULT '0',

    `userOption32` text COLLATE utf8mb4_unicode_ci,

    `userOption33` text COLLATE utf8mb4_unicode_ci,

    `userOption34` text COLLATE utf8mb4_unicode_ci,

    `userOption35` text COLLATE utf8mb4_unicode_ci,

    `userOption36` text COLLATE utf8mb4_unicode_ci,

    `userOption37` text COLLATE utf8mb4_unicode_ci,

    `userOption38` text COLLATE utf8mb4_unicode_ci,

    `userOption39` text COLLATE utf8mb4_unicode_ci,

    `userOption40` text COLLATE utf8mb4_unicode_ci,

    `userOption41` text COLLATE utf8mb4_unicode_ci,

    `userOption42` text COLLATE utf8mb4_unicode_ci,

    `userOption43` text COLLATE utf8mb4_unicode_ci,

    PRIMARY KEY (`userID`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

  • "Herzlichen Glückwunsch", Deine Datenbank ist beschädigt, und damit sehr wahrscheinlich inkonsistent. Denn zumindest in dieser Tabelle fehlt der Fremdschlüssel; damit ist es sehr wahrscheinlich, das auch weitere Fremdschlüssel fehlen.


    Die Fehlermeldung des WSC resultiert also daraus, dass inkonsistente Daten vorliegen. Sowas fängt das WSC natürlich nicht ab, und daher kommt es zur Exception.

  • Hab ich doch geschrieben... die Datenbank tut es nicht mehr; weil die Datenbank kaputt ist... damit ist sie inkonsistent... daraus resultierten viele "tolle" unerwartete und nicht vorhersehbare "Exceptions" des WSC... weil mindestens in einer Tabelle die Fremdschlüssel fehlen. Und wenn die Fremdschlüssel in einer Tabelle fehlen, dann werden sie auch wahrscheinlich noch in weiteren Tabellen fehlen!


    P.S.: Es gab da mal ein Plugin mit dem Du das Ausmaß der verlorenen Fremdschlüssel ermitteln kannst.


    P.P.S.: Dir bleiben nun die Möglichkeiten die Datenbank manuell zu reparieren... ist recht auffändig, aber geht mit einem gesunden Datenbankwissen. Oder DU spielst das Backup ein, das die Fremdschlüssel noch enthält... dabei wirst Du allerdings Daten verlieren. Letzte Option, Du installierst alles neu in einen anderen Ordner und importierst aus der kaputten Installation.

  • Das ist die Abfrage bei einer noch leeren Neuinstallation

    Ich sehe da auf den ersten Blick keinen Unterschied


    wcf1_user_option_value CREATE TABLE `wcf1_user_option_value` (

    `userID` int(10) NOT NULL,

    `userOption1` text COLLATE utf8mb4_unicode_ci,

    `userOption2` char(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0000-00-00',

    `userOption3` tinyint(1) NOT NULL DEFAULT '0',

    `userOption4` text COLLATE utf8mb4_unicode_ci,

    `userOption5` text COLLATE utf8mb4_unicode_ci,

    `userOption6` text COLLATE utf8mb4_unicode_ci,

    `userOption7` text COLLATE utf8mb4_unicode_ci,

    `userOption8` mediumtext COLLATE utf8mb4_unicode_ci,

    `userOption9` text COLLATE utf8mb4_unicode_ci,

    `userOption10` text COLLATE utf8mb4_unicode_ci,

    `userOption11` text COLLATE utf8mb4_unicode_ci,

    `userOption12` text COLLATE utf8mb4_unicode_ci,

    `userOption13` text COLLATE utf8mb4_unicode_ci,

    `userOption14` text COLLATE utf8mb4_unicode_ci,

    `userOption15` tinyint(1) NOT NULL DEFAULT '0',

    `userOption16` text COLLATE utf8mb4_unicode_ci,

    `userOption17` tinyint(1) NOT NULL DEFAULT '0',

    `userOption18` tinyint(1) NOT NULL DEFAULT '0',

    `userOption19` text COLLATE utf8mb4_unicode_ci,

    `userOption20` text COLLATE utf8mb4_unicode_ci,

    `userOption21` text COLLATE utf8mb4_unicode_ci,

    `userOption22` text COLLATE utf8mb4_unicode_ci,

    `userOption23` text COLLATE utf8mb4_unicode_ci,

    `userOption24` tinyint(1) NOT NULL DEFAULT '0',

    `userOption25` text COLLATE utf8mb4_unicode_ci,

    `userOption26` text COLLATE utf8mb4_unicode_ci,

    `userOption27` text COLLATE utf8mb4_unicode_ci,

    `userOption28` text COLLATE utf8mb4_unicode_ci,

    `userOption29` text COLLATE utf8mb4_unicode_ci,

    `userOption30` text COLLATE utf8mb4_unicode_ci,

    `userOption31` tinyint(1) NOT NULL DEFAULT '0',

    `userOption32` text COLLATE utf8mb4_unicode_ci,

    `userOption33` text COLLATE utf8mb4_unicode_ci,

    PRIMARY KEY (`userID`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

  • Woran erkennst du das?

    Liest Du meine Beiträge? Scheinbar nicht... also bin ich hier raus.


    P.S.: Letzter Beitrag zur Güte... eine vollständige Tabelle sieht so aus:


    Das entscheidende dabei ist der Fremdschlüssel:

    CONSTRAINT `70fd058b666c49e3e04a0066f318ede5_fk` FOREIGN KEY (`userID`) REFERENCES `wcf1_user` (`userID`) ON DELETE CASCADE


    Genau der sorgt nämlich in dieser Tabelle - und in vielen anderen Tabellen auch - dafür das keine Datenleichen zurückbleiben. Bleiben aber auf Grund des Fehlens von Fremdschlüsseln Datenleichen zurück, so ist die Datenbank nicht mehr konsistent.


    In Deinem Fall also ist die Datenbank beschädigt (weil mindestens an einer Stelle Fremdschlüssel fehlen) und inkosistent (weil schon Datenleichen existieren).

  • Du hast nicht zufällig mal irgendwann ein Backup mit MySQLDumper eingespielt?

    Ich habe meine Datenbank schon öfters mit "mysqldump" auf einen anderen Server kopiert und bei mir sind alle FK's da (hatte dort nur Probleme mit DB Prozeduren).


    Ein Import der Daten in eine frische Installation dürfte wohl scheitern, da du ungültige Einträge hast.


    Hab dir mal eine Liste aller FKs angehängt die bei mir drin sind (WSC, WBB + Calendar)


    https://pastebin.com/k9eBUfdW


    SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = 'vrp_forum' AND CONSTRAINT_TYPE = 'FOREIGN KEY'

    vrp_forum ist mein Datenbankname in der WSC installiert ist.

  • So fertig, läuft wieder alles normal.
    290 Fremdschlüssel eingearbeitet, über 4000 verwaiste Datensätze gelöscht.


    Thema kann mit gelabelt und geschlossen werden ;)


    Danke an alle die geholfen haben