Page 1 of 1
Datenbankserver Problem nach Upgrade
Posted: Fri 8. Oct 2021, 18:19
by IchBins
Hallo,
nachdem ich auf Debian 11 geupgradet hatte, musste ich nun feststellen, dass es immer wieder vorkommt, dass man keine Datenbank anlegen kann.
Database error: SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared
Nachdem ich den Dienst neu gestartet habe, geht es wieder. Aber nach einer gewissen Zeit fällt es wieder aus.
In der /var/log/keyhelp/php-error.log stehen solche Einträge.
08-Oct-2021 17:36:02 Europe/Berlin] PHP Warning: Database error: SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared in /home/keyhelp/www/keyhelp/core/Database/DatabaseConnection.php on line 490
[08-Oct-2021 18:11:01 Europe/Berlin] Database error: SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared
[08-Oct-2021 18:15:38 Europe/Berlin] Database error: SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared
[08-Oct-2021 18:16:22 Europe/Berlin] MySQL - Connection Error: 2002 (No such file or directory)
Re: Datenbankserver Problem nach Upgrade
Posted: Fri 8. Oct 2021, 18:59
by nikko
Also du loggst dich als User ein und legst eine leere Datenbank an. Das wirft eine Fehlermeldung in KH?
Re: Datenbankserver Problem nach Upgrade
Posted: Fri 8. Oct 2021, 21:13
by IchBins
Genau...ich logge mich als User ins Keyhelp ein und wenn ich dann nach dem eingeben der Daten für die Datenbank auf speichern klicke kommt diese Meldung. Es wird dann nur die Fehlermeldung auf einer ansonsten weißen Seite angezeigt.
Re: Datenbankserver Problem nach Upgrade
Posted: Sat 9. Oct 2021, 14:00
by space2place
Wenn man den Fehler mal googeln würde, dann bekommt man immer wieder den Hinweis den Parameter
Zu erhöhen und MariaDB neu zu starten.
Re: Datenbankserver Problem nach Upgrade
Posted: Sat 9. Oct 2021, 14:40
by IchBins
Habe ich gemacht. Ich bin aber noch am testen. Daher habe ich noch nichts wieder geschrieben.
Seit 4 Stunden funktioniert es jetzt. Ich hatte table_definition_cache auf 10000 gesetzt.
Re: Datenbankserver Problem nach Upgrade [GELÖST]
Posted: Mon 28. Feb 2022, 16:10
by Tobi
Nachdem mir das jetzt auch passiert ist und ich dann über Google diesen Beitrag gefunden habe, möchte ich nun auch noch die Lösung posten.
Zuerst fragt man den aktuellen Status ab.
Code: Select all
# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 19713
Server version: 10.5.12-MariaDB-0+deb11u1 Debian 11
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select @@table_open_cache;
+--------------------+
| @@table_open_cache |
+--------------------+
| 8192 |
+--------------------+
1 row in set (0.000 sec)
MariaDB [(none)]> show global status like 'opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 4879 |
+---------------+-------+
1 row in set (0.000 sec)
MariaDB [(none)]> show global status like 'open_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 4727 |
+---------------+-------+
1 row in set (0.001 sec)
MariaDB [(none)]> quit;
Bye
In diesem Fall ist der erste Wert, die 8192 entscheidend.
Als nächstes legen wir eine neue Datei unterhalb von "/etc/systemd/system/mariadb.service.d/" an. Der Dateiname ist egal, wichtig ist nur, dass die Datei auf ".conf" endet.
Code: Select all
# nano /etc/systemd/system/mariadb.service.d/opentables.conf
in diese Datei kommt:
Code: Select all
[Service]
Environment="MYSQLD_OPTS=--table-open-cache=100000"
Am Ende der letzten Zeile einen Zeilenumbruch setzen!
Datei Speichern und nano verlassen.
Jetzt noch ein
WIr prüfen ob es geklappt hat:
Code: Select all
# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2337
Server version: 10.5.12-MariaDB-0+deb11u1 Debian 11
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select @@table_open_cache;
+--------------------+
| @@table_open_cache |
+--------------------+
| 100000 |
+--------------------+
1 row in set (0.000 sec)
MariaDB [(none)]>
Bestens

Re: Datenbankserver Problem nach Upgrade
Posted: Mon 28. Feb 2022, 16:16
by Jolinar
Tobi wrote: ↑Mon 28. Feb 2022, 16:10
Als nächstes legen wir eine neue Datei unterhalb von "/etc/systemd/system/mariadb.service.d/" an. Der Dateiname ist egal, wichtig ist nur, dass die Datei auf ".conf" endet.
Code: Select all
# nano /etc/systemd/system/mariadb.service.d/opentables.conf
in diese Datei kommt:
Code: Select all
[Service]
Environment="MYSQLD_OPTS=--table-open-cache=100000"
Am Ende der letzten Zeile einen Zeilenumbruch setzen!
Datei Speichern und nano verlassen.
@Alex:
Würde es evtl. Sinn machen, den Parameter in der Standardkonfiguration des DB-Servers beim Keyhelp Setup zu setzen?
Re: Datenbankserver Problem nach Upgrade
Posted: Mon 28. Feb 2022, 16:49
by Alexander
Standardmäßig (ohne KeyHelp) setzt MariaDB 10.5. (Debian 11) den Wert auf 2000.
Eine KeyHelp-Installation setzt den Wert hier anschließend auf 4096.
Würde ich also vorerst nicht noch weiter erhöhen wollen, weil der Wert auch sehr davon abhängt, was man mit seinem Server so anstellt.
Re: Datenbankserver Problem nach Upgrade
Posted: Mon 28. Feb 2022, 17:03
by Tobi
Bei mir waren die 8192 als default gesetzt.
Ich hatte an dem Parameter bisher nix verändert.
Re: Datenbankserver Problem nach Upgrade
Posted: Wed 2. Mar 2022, 14:37
by Tobi
Wie sich gezeigt hat, reicht das Anheben der Limits innerhalb der Datenbankkonfiguration nicht aus.
Ich musste zusätzlich die OS-seitigen Dateibeschränkungen des Users mysql anpassen.
Wie das geht sagt euch fulltilt
https://debianforum.de/forum/viewtopic. ... 8#p1139359
Erst jetzt läuft alles rund.
Vorher ist der Standardwert von 1024 gesetzt. Auf einem Server mit vielen Datenbanken und den daraus resultierenden Tabellen wird das OS seitige Datei-Limit (schnell) erreicht. Standardmäßig dürfen somit nur max. 1024 Dateien gleichzeitig geöffnet sein. Jede Tabelle einer Datenbank benötigt jedoch bereits zwei Dateien.
In diesem konkreten Fall war das Filelimit von Debian11 nach 25 Joomla Installationen (mit jeweils ein paar Extensions

) erreicht.