Datenbankfehler (Error 500)

  • Hallo Forum,


    da hier ja einige "echte" Experten unterwegs sind, wende ich mich mit meinem Problem mal an Euch:


    Ich habe eine defekte Joomla-Seite "geerbt" (Joomla 3.8.7, ließ sich problemlos auf 3.8.8 aktualisieren) und versuche gerade, sie wieder flott zu bekommen. Das Frontend meldet (nach Ablauf der max. Skriptausführungszeit) Error 500 ("internal server error"), das Backend funktioniert scheinbar einwandfrei.


    Nach einigem Testen bin ich zu dem Schluss gekommen, dass der Fehler vermutlich in der DB liegen wird, denn: Die DB hat zwei Präfixe, in der configuration.php ist der zweite angegeben. Ändere ich den Präfix zum ersten, lädt die Seite (mit einem leeren Menü und ohne jeden Content, der aber auch tatsächlich in der DB nicht vorhanden ist) - scheinbar stammt dieser Präfix aus der Installationsphase und wurde später mal geändert. Leider bin ich nicht soooo fit in Joomla, dass ich sagen könnte, welche Tabellen der DB zur Darstellung der Startseite zwingend gebraucht werden. Ich habe auch schon alle Erweiterungen von Drittanbietern deaktiviert (ich hoffe, ich habe alle gefiunden), das hat aber das Problem nicht gelöst. Auch das Deaktivieren aller Menüpunkte außer der Startseite brachte keine Abhilfe. Der Content der Startseite wirkt auf mich im Editor "harmlos" (nur eine Tabelle mit ein paar Bildern und ein wenig Text). DB-Reparaturtools von Joomla und PHPMyAdmin haben auch nicht geholfen.


    Meine Frage ist nun, wie ich das Problem geschickterweise weiter eingrenze. Bin für jeden Tipp dankbar!

  • Ich bin zwar kein "echter" Experte, aber vielleicht habe doch ein paar Ideen, á la Brainstorming. ;)

    lade dir ein Backup lokal herunter und stelle es auf deinem PC nach...

    in der configuration.php auf ein Präfix ändern, das andere Präfix dann auch in der DB löschen. Testen. Das gleiche dann mit dem anderen Präfix ausprobieren.

    Wieviel Content ist denn auf der Seite? Ist in beiden Content-Datenbanktabellen was drin? Neustart vielleicht doch besser?

  • Hallo Abraxas,


    danke für's "Kümmern". Klar kann ich die Tabellen des funktionierenden Präfix' mal löschen, aber das probiere ich dann erstmal auf dem Webspace. Die Seite hat ja dort "irgendwann" mal funktioniert.


    Mich würde mal interessieren, welche Tabellen Joomla zwingend benötigt, um (in einer Grundinstallation) die Startseite anzeigen zu können. Evtl. käme man auf diesem Weg weiter: Die DB einer frischen Joomla-Installation nehmen und dann die Inhalte dort rein kopieren. Nur müsste ich dazu halt erstmal wissen, welche Tabellen benötigt werden.

  • wenn du eine frische Joomla Installation machst legst du ja automatisch eine Datenbank an. Dort siehst du ja auch mit phpMyAdmin oder einem anderen DB-Verwaltungstool deiner Wahl, welche Tabellen angelegt werden. Davon würde ich auch nicht abweichen, da dort auch Abhängigkeiten drin sind. Und wenn die Tabellen dann leer bleiben, dann tut´s keinem weh ... Platz brauchen die nicht.

  • Wie hoch ist denn überhaupt die Scriptausführungszeit?

    Was lässt dich vermuten, dass der Fehler in der DB zu suchen ist?

    Worin bestand der Defekt an der Joomla 3.8.7-Seite? Gab es Fehlermeldungen?

    Hast du schon mal ein frischen Joomla 3.8.8 "drübergebügelt" (natürlich ohne die Ordner "Installation" und "templates")?

    Link zur Seite?

  • Dass es mit den Tabellen mit dem anderen Präfix halbwegs funktioniert, liegt vermutlich daran, dass die Erweiterung oder wasauchimmer, was den Fehler wirft, nicht in den Tabellen mit dem anderen Präfix vorhanden ist, somit auch nicht abgeholt wird. Präfix wieder ändern, Fehlerausgabe im Backend auf maximum stellen, und wiederkommen. Ansonsten wirst du irgendwann einen Müllhaufen haben, wenn da ungenutzte Erweiterungen herumschwirren, oder du auf "Erweiterungen -> Überprüfen" gehst. Tu das nicht mit dem jetzigen Präfix.


    Ach ja: Backup, Backup, Backup.

  • JoomlaWunder:

    Scriptausführungszeit ist momentan 60 Sekunden, der Fehler tritt aber immer auf, wenn ich die Zeit hochscrhaube, dann halt entsprechend später...

    Ich vermute den Fehler in der DB, weil sich die Seite mit dem anderen Präfix öffnen lässt (s. Ausgangsposting) - also scheint der Core i.O. zu sein

    Der Fehler war "500 Internal Server Error" (s. Ausgangsposting)

    Ich hab vom Backend aus ein Update von 3.8.7 auf 3.8.8 gemacht, hat aber nichts gebracht.


    j!-n:

    Ja, genau das ist ja auch meine Vermutung, dass da irgendwas in der DB steht, womit Joomla nicht klar kommt. Deswegen wollte ich ja wissen, welche Tabellen IMMER benötigt werden...

    Error_reporting steht auf "maximum", erhalte trotzdem die Fehlermeldung des Servers (Error 500)

    Und ja, ich habe sowohl lokale als auch serverseitige Backups der DB und des Contents der letzten 4 Wochen. Leider ist auch mein ältestes Backup vom 29.04. offenbar bereits fehlerhaft. Vor dem Beginn der Fehlersuche habe ich auch noch einmal ein Backup des "Ist-Zustands" des httpdocs-Ordners und der DB gemacht.

    Habe auch schon alle Tabellen optimiert und repariert (also optimize und repair). Ich fummele mal weiter an den DB-Tabellen rum und freue mich weiter über jeden Tipp und jede Idee!

  • Es könnten ja auch 2 Probleme oder mehr existieren. Löst du eines und es kommt wieder ein Fehler, dann merkst du gar nicht, dass du das erste Problem bereits gelöst hast.


    Deshalb würde ich zunächst ein Joomal 3.8.8 dateimäßig "drüberbügeln".

    Dann ein neues Joomal 3.8.8 installieren. Hiervon wird nur die DB benötigt. Kannst also die Verzeichnisse/Dateien wieder löschen.

    Nun schaltest du dein defektes Joomla auf die neue frische Datenbank um. Dies sollte funktionieren.

    Anschließend versuchst du die Unterschiede zwischen den beiden Datenbanken zu ermitteln.


    Deine DB-Tabellen mit dem alten Präfix solltest du unbeachtet lassen. Denn wer weiß schon zu welcher Joomla-Version diese Tabellen wirklich mal gehörten.


    Die DB-Reparatur über Joomla macht in aller Regel einen Sinn. Aber weitere Optimierungstools würde ich nicht nutzen. Das macht dir möglicherweise mehr kaputt als dass es dir hilft.


    EDIT: Nur so nebenbei: Die PHP-Version passt? Und "mysqli" ist es auch?

  • Ich würde mal folgendes machen:


    Eine neue Datenbank anlegen. Dann ein frisches Joomla installieren und dabei das Präfix angeben, mit dem es halbwegs funkitoniert.

    Dann muss diese Installation funktionieren - in der Datenbank hast du dann alle Tabellen, die zwingend notwendig sind.

    Exportiere diese Datenbank (mit Drop Table = yes) dann hast du eine Vergleichsdatenbank.


    Vergleiche die Tabellen #__extensions. (sortiere absteigend nach der extension_id) Nun siehst du, ob eventuell Extension in der alten Datenbank sind, die nicht zu joomla gehören. Lösch diese Sätze.


    Na .. und dann muss man sich eben weiter durchhangeln.

    Was du NICHT machen darfst: Sätze oder Tabellen aus der alten Datenbank einfach so in die neue rüberkopieren oder umgekehrt.

  • JoomlaWunder:

    Wie gesagt - mit anderer DB funzt die Seite, deswegen hab ich Probleme in den Dateien erstmal ausgeschlossen.


    firstlady:

    Das ist mal ein interessanter Ansatz. Nach genau DIESER Information habe ich gesucht! Ich hab mir zwar nicht die Mühe gemacht, eine neue DB anzulegen, sondern hab erst mal, wie von Dir vorgeschlagen, nach Primärschlüssel abwärts sortiert und ein paar Erweiterungen von Drittanbietern aus der Tabelle rausgehauen -- und was soll ich sagen: Die Seite lädt wieder! Ich spiele jetzt das Backup der DB wieder ein und haue eine Erweiterung nach der anderen aus der Tabelle. Dann werde ich ja sehen, ab wann es wieder geht!


    So, jetzt muss ich nur noch schauen, wie ich das Thema auf erledigt setze und "Dankeschöns" an Euch verteile! :)

  • Ich spiele jetzt das Backup der DB wieder ein und haue eine Erweiterung nach der anderen aus der Tabelle. Dann werde ich ja sehen, ab wann es wieder geht!

    Damit hast du aber dein Problem noch nicht gelöst, es sei denn, du verzichtest einfach auf diese Erweiterung.

    Musst halt schauen, warum diese Erweiterung nicht funktioniert. Hier spielen dann meist das Alter der Erweiterung, die PHP-Version, eventuell eine defekte Datei oder irgendwelche Konflikte eine Rolle.