Allowed memory size .... exhausted

  • Hallo Leute,


    ich weiß, dass das kein neues Problem ist. Aber ich probiere seit mehreren Stunden an verschiedenen Tagen herum und komme nicht weiter.
    Ich habe auf meiner lokalen XAMPP-Installation in den letzten 2 Wochen Schritt für Schritt eine Homepage in Joomla mit dem Template allrounder 3 (und der Hilfe der Tutorials von Bonnie and Clyde) aufgebaut. Es hat alles schön geklappt mit einem horizontalen Mainmenu und zig Beiträgen.
    Jetzt versuche ich verzweifelt die letzten Einträge (Impressum, Externe Links usw.) hineinzubekommen.
    Ich scheitere aber immer wieder mit einer Fehlermeldung wie im Titel, wobei unterschiedliche PHP auftauchen. Die letzte jetzt (Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 131072 bytes) in C:\xampp\htdocs\aev\libraries\joomla\table\nested.php on line 1351) verweist auf die Zeile:
    $rightId = $this->rebuild($node->{$this->_tbl_key}, $rightId, $level + 1, $path . (empty($path) ? '' : '/') . $node->alias);


    Ich habe an diversen Stellen im Internet gelesen, dass man den Wert für memory in der php.ini heraufsetzen muss. Ich habe mittlerweile von 256M über 512M auf 1024M erhöht (und auch xampp immer wieder neu gestartet) ohne Erfolg.
    Das Ergebnis jetzt nach dem Versuch, den Menüpunkt 'Externe Links' ins mainmenu einzufügen mit der o.a. Fehlermeldung ist, dass im Frontend nur noch der letzte Menüeintrag 'Externe Links' zu sehen ist und beim Klicken darauf die anderen Menüpunkte als Dropdown darunter angezeigt werden. Die php-Datenbank zeigt unter menus dieses letzte Menü mit der Id 0 an. Im Backend wird im mainmenu dieser Menüeintrag vermutlich deshalb auch nicht angezeigt und ist nicht bearbeitbar. Ich muss den Eintrag in der Datenbank löschen und dann ist mein horizontales mainmenu wieder da.


    ich weiß nicht mehr weiter. ?(
    Hat jemand eine hilfreiche Lösung? Bitte nicht allzuviele Kenntnisse bei mir voraussetzen. Ich bin kein Website-Profi.


    Marc

  • Unter Systeminformationen->PHP-Informationen (Backend) wird das aktuelle memory_limit angezeigt (nach unten scrollen!). Ist der eingestellte Wert wirksam. Nach einer Änderung muss der Apache neu gestartet werden.
    Ansonsten gab es diesen oder einen ähnlichen Fehler bereits bei älteren Versionen, meist nach Verwendung von Migrationstools. Ich würde bei den Menüs zunächst einmal auf "Wiederherstellen" klicken. Eventuell anschließend noch mal auf "DB reparieren" unter Erweiterungen -> Verwalten -> Datenbank.

  • Danke JoomlaWunder für die Tipps.
    Unter den Systeminformationen wird (wie in der php.ini eingetragen) für memory 1024 M angezeigt.
    Trotzdem tritt ein memory-Fehler auch bei anderen Aktionen auf. Das Update für Akeeba Backup endet ebenfalls mit solchen Fehlermeldungen.


    Wie ich oben schrieb, konnte ich durch Eingriff in die Datenbank den mainmenu-Fehler wieder beseitigen. Ich komme aber insgesamt nicht weiter, weil jetzt bei allem neuen diese Fehlermeldungen kommen, als ob die Website zu groß wäre insgesamt, obwohl der Speicher auf 1024 M steht.

  • Eine Lösung habe ich gerade nicht, aber eine Information. Die Webseite ist sicher nicht zu groß sondern beim Zugriff auf die Datenbank kommt eine Anftrage nicht zu Ende und läuft in eine Endlosschleife.
    Klick mal in Menus -Verwalten oben auf "Wiederherstellen".
    Und versuch doch mal, die ganze website mit Akeeba wiederherzustellen. Beim neu speichern der Beiträge und Menüs sollte sich das Problem auflösen.

  • Hallo Christiane,


    danke für die Info. Ich habe die Wiederherstellung im Menübereich durchgeführt. Sie wurde als erfolgreich kommentiert.
    Beim erneuten Versuch den neuen Menüeintrag 'Impressum' ins maimenu aufzunehmen und mit einem Einzelbeitrag dort zu versehen, kam wieder die Fehlermeldung:
    Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 126976 bytes) in C:\xampp\htdocs\aev\libraries\joomla\table\nested.php on line 1351
    In der Datenbank war in der Menütabelle wieder ein Eintrag mit id = 0. Solange der drinstand, war die Wiederherstellung nicht möglich. Nach Entfernung des Eintrags funktionierte auch die Wiederherstellung wieder.


    Das Backup-Einspielen teste ich jetzt. Leider liegt die letzte Sicherung einige Tage zurück.


    Gruß
    Marc

  • Hallo Christiane,


    das Einspielen des Backups war erfolgreich, enthält aber noch viele veraltete Strukturen ud n Einträge. Das muss ich erst wieder aktualisieren.
    Wenn der Fehler dann wieder auftritt, melde ich mich wieder.


    Bis dahin, danke
    Marc

  • Hallo zusammen,


    ich wollte nur mal Rückmeldung geben. Ich habe gestern eine Menge rumgewurstelt bis ich die Seite wieder up to date hatte. Ich habe natürlich auch den Papierkorb gelöscht und war schließlich wieder soweit, dass ich die 2 Menüeinträge einfügen wollte.
    Wieder kam bei jedem die Fehlermeldung und der Eintrag in der Datenbank trug die ID=0. Ich habe dann kurzerhand in der Datenbank die ID von Hand auf die nächst höhere Zahl gesetzt und siehe da, es war so, wie es sein sollte.
    Nun ist das ja keine Lösung auf Dauer. Ich kann zukünftig nicht jedes Mal von Hand in der Datenbank nacharbeiten.


    Die Fehlermeldung kommt auch, wenn ich versuche, das Akeeba Backup upzudaten, was derzeit angeboten wird. Die angezeigten PHP sind dann aber andere.


    Derzeit warte ich mal ab.


    Gruß
    Marc

  • Hallo Marc,
    das ist wirklich keine Lösung und kann nicht sein. Da du der einzige bist, bei dem das passiert muss bei dir irgendwas ungewöhnlich sein. Reinschauen kann man ja nicht da du lokal arbeitest.
    So wie du das beschreibst hätte die Tabelle in deiner Datenbank kein Auto-Inkrement für die id.


    Das akeeba würde ich ja deinstallieren.Wozu brauchst du das denn auf einer lokalen installation? Hast du noch was anderes von Akeeba oder sonst installiert?


    EDIT: @Re:Later hatte denselben Gedanken, wir haben gleichzeitig geschrieben. Aber die Frage wäre doch: warum sollte ausgerechnet diene Installation eine Extrawurst haben?
    Dafür muss es einen Grund geben.

  • Prüfe ob Feld "id" in Spalte Extras einen Wert "AUTO_INCREMENT" hat.


    Habe ich jetzt geprüft. Das Feld hat kein AUTO.INCREMENT. Nach Anklicken von >Bearbeiten< habe ich aber keine Stelle gefunden, wo ich das hätte eintragen können. Ein Feld 'Extra' wurde mir nicht angezeigt.
    Wie kann ich das machen?


    Ich habe dazu noch beim Prüfen unter Erweiterungen -> Verwalten -> Datenbank eine Fehlermeldung gesehen:
    Der Index „'idx_client_id_parent_id_alias_language'“ ist nicht in Tabelle „'fde8j_menu'“ enthalten. (Von Datei: „2.5.0-2011-12-24.sql“.)
    Soweit ich das verstehe, bezieht sich das allerdings auf eine sehr viel ältere Version von Joomla, wobei ich nicht begreife, wie das auf einem vor 3 Wochen völlig neu installierten xampp noch "herumgeistern" kann.


    Gruß
    Marc

  • Wie kann ich das machen?


    Hallo Re:Later ich habs geschafft mit dem SQL-Befehl: ALTER TABLE `fde8j_menu` CHANGE `id` `id` INT( 11 ) NOT NULL AUTO_INCREMENT.


    Zum Test habe ich gleich nochmal einen Menüeintrag angelegt. Der hat jetzt funktioniert.
    Danke das Problem ist damit beseitigt.


    Der andere Datenbankfehler (s.o.) scheint nur ein "Schönheitsfehler" zu sein


    Gruß
    Marc

  • Der andere Datenbankfehler (s.o.) scheint nur ein "Schönheitsfehler" zu sein


    Das weiß man nicht. Kann halt immer irgendwann schlecht ausgehen. Bei einem Menü-Speichervorgang wird nicht nur in eine DB-Tabelle gespeichert und diese "Querspeicherungen" benötigen die korrekt übermittelte ID.
    Backup machen.


    Aber die Frage wäre doch: warum sollte ausgerechnet diene Installation eine Extrawurst haben?
    Dafür muss es einen Grund geben.


    Jedenfalls solltest du die andern Tabellen durchsehen, ob sie eine AUTO_INCREMENT-Spalte haben.

    Klick mal in Menus -Verwalten oben auf "Wiederherstellen".


    Und unter Erweiterungen > Datenbank den Reparieren-Button klicken.

  • Und unter Erweiterungen > Datenbank den Reparieren-Button klicken.


    Hallo Re:Later


    das habe ich so gemacht. Dann kommt die Meldung:
    1062 Duplicate entry '0-1-verein-*' for key 'idx_client_id_parent_id_alias_language'
    Ich kann damit leider gar nichts anfangen. Wo könnte ich da etwas korrigieren?


    In der Zwischenzeit mache ich mich daran, nachzuprüfen, ob jede Tabelle in der Datenbank ein AUTO_INCREMENT auf der 'Id' hat.

    • Hilfreich

    1062 Duplicate entry '0-1-verein-*' for key 'idx_client_id_parent_id_alias_language' [/quote]
    Ah, Ok. Kenn ich.


    Infos sammeln:
    - Schau dir die Tabelle menu an im Reiter "Struktur". Steht da in Spalte Kollation, überall, wo was steht, utf8mb4_* oder utf8_*?


    Es geht darum, ob die Umwandlung in utf8mb4 schon stattgefunden hat. Wobei nach deiner Beschreibung, das ja eigentlich schon bei Installation des neuen Joomlas unter XAMPP der Fall gewesen sein sollte. Egal erst mal.


    - In Joomla > Systeminformationen > Reiter Systeminformationen. Poste die dortigen Infos.


    - Dann in Tabelle menu die Spalte Alias durchscrollen. Mit diesem Button kannst du einstellen, dass Aliase nicht abgeschnitten werden.


    Hier kannst Anzahl eingeben, wenn du alle in 1 View haben willst. Dauert bei XAMPP etwas bis dann alle angezeigt werden:


    Gibt es superlange Aliase? Länger als, ich sag mal 80 Zeichen (ein ganz sicherer Wert, bevor wir jetzt anfangen, die passende Länge rauszupopeln)?
    Oder suchst erst mal nach welchen, die mit "verein-" anfangen.


    Jedenfalls musst du wohl ein paar kürzen.


    - Bei welcher höchsten ID ist die Tabelle menu mittlerweile angelangt? 3-, 4-, 5-stellig?


    Kann man auch im Tabulator "Operationen" nachsehen, wo der Wert "AUTO_INCREMENT" mittlerweile angelangt ist.


    - Es gibt jetzt keinen Eintrag mehr mit ID = 0?

  • 1062 Duplicate entry '0-1-verein-*' for key 'idx_client_id_parent_id_alias_language'
    Ah, Ok. Kenn ich


    Danke Re:Later für Deine ausführlichen Darlegungen.
    Leider habe ich erst heute wieder reingeschaut, weil ich mich entschlossen hatte, das ganze Joomla nochmal neu aufzubauen. Ich habe dann meine Datenbank solange in der SQL-Fassung bearbeitet, bis ein fehlerfreier Re-Import wieder möglich war. Dabei ist mein Verständnis für SQL etwas gewachsen, was dazu geführt hat, dass ich den Fehler ausmerzen konnte.
    In der Tabelle fde8j_menu befanden sich noch Einträge von Menüs, die ich in der Aufbauphase angelegt, dann aber wieder gelöscht hatte. Warum die in der Tabelle nicht gelöscht waren, weiß ich nicht. Darin befanden sich 2 Datensätze mit dem Alias 'verein' (Weil ich die Aliase aus systematischen Gründen selbst angelegt hatte.) Der eine Eintrag gehörte zu einem aktiven Menü, der andere zu einem längst gelöschten.
    Der Versuch, den kombinierten Unique-Index anzulegen, musste dann logischerweise scheitern.


    Es gibt jetzt auch keine Einträge mehr mit Id = 0!


    Danke für die Unterstützung
    Marc

  • Also dann ... erinnere dich:

    Zitat

    Die Frage ist, woher der kommt. Hast du im Papierkorb irgendwelche alte Menüeinträge?
    Falls ja: haben sie alias-namen, mit denen sich ein Konflikt ergeben kann?
    Oder hast du einen aktiven Menüeintrag auf einer Ebene >1 , dessen Parent im Papierkorb oder gelöscht ist?


    Die Einträge waren nicht gelöscht weil sie im Papierkorb waren. Dabei verändert sich nur der Status.