MyBB.de Forum
Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: MyBB 1.8.x (https://www.mybb.de/forum/forum-87.html)
+--- Forum: Installation, Aktualisierung und Merge System (https://www.mybb.de/forum/forum-89.html)
+--- Thema: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen (/thread-39198.html)



Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - tim123456 - 10.07.2024

Hallo zusammen,

ich bin neu bei MyBB und habe so eben MyBB (1.8.38) von mybb.de mit php-fpm 8.3 hinter nginx installiert. Der MyBB installer lädt ohne Probleme, und zeigt an das alle Voraussetzungen erfüllt sind.

Bei der Datenbank habe ich Sqlite 3 ausgewählt, einen von php-fpm schreibbaren Pfad angegeben, in meinem Fall, `/data/db/mybb.sqlite`, und die Installation fortgeführt. Ich habe sehen können das die Datenbank und Tabellen erstellt wurden, und nirgends gab es Fehlermeldungen.

So bald ich dann das Forum öffne, siehe ich im Browser auch keine Problem, aber in den logs sehe ich dann lauter Fehler. So sehen die logs aus:

Code:
mybb1-1  | - -  10/Jul/2024:17:15:24 +0000 "GET /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:15:30 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:15:33 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:15:35 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:15:40 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:02 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:05 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:07 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:09 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:11 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:33 +0000 "POST /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:42 +0000 "GET /install/index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:45 +0000 "GET /index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:45 +0000 "GET /task.php" 200
mybb1-1  | PHP message: PHP Fatal error:  Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '512' frames in /var/www/html/inc/db_pdo.php:168
mybb1-1  | Stack trace:
mybb1-1  | #0 /var/www/html/inc/db_sqlite.php(420): dbpdoEngine->error_number('HY000')
mybb1-1  | #1 /var/www/html/inc/db_sqlite.php(468): DB_SQLite->error_number('HY000')
mybb1-1  | #2 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #3 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #4 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #5 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #6 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #7 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #8 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #9 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #10 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #11 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #12 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #13 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #14 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #15 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #16 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #17 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #18 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #19 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #20 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #21 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #22 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #23 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #24 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #25 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #26 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #27 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #28 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #29 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #30 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #31 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #32 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #33 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #34 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #35 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #36 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #37 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #38 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #39 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #40 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #41 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #42 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #43 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #44 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #45 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #46 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #47 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #48 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #49 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #50 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #51 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #52 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #53 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #54 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #55 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #56 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #57 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #58 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #59 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #60 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #61 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #62 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #63 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #64 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #65 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #66 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #67 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #68 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #69 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #70 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #71 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #72 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #73 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #74 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #75 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #76 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #77 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #78 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #79 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #80 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #81 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #82 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #83 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #84 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #85 /var/www/html/inc/db_sqlite.php(491): errorHandler->error(20, Array)
mybb1-1  | #86 /var/www/html/inc/db_sqlite.php(226): DB_SQLite->error('SQLSTATE[HY000]...', 'HY000')
mybb1-1  | #87 /var/www/html/inc/db_sqlite.php(308): DB_SQLite->query('\n\t\t\tINSERT\n\t\t\tI...', 0)
mybb1-1  | #88 /var/www/html/inc/db_sqlite.php(713): DB_SQLite->write_query('\n\t\t\tINSERT\n\t\t\tI...')
mybb1-1  | #89 /var/www/html/inc/functions_task.php(125): DB_SQLite->insert_query('tasklog', Array)
mybb1-1  | #90 /var/www/html/inc/class_error.php(227): add_task_log(Array, 'MyBB SQL Error ...')
mybb1-1  | #91 /var/www/html/inc/db_sqlite.php(491): e...
mybb1-1  | - -  10/Jul/2024:17:16:45 +0000 "GET /index.php" 200
mybb1-1  | - -  10/Jul/2024:17:16:46 +0000 "GET /task.php" 200

Hat jemand eine Idee was hier das Problem ist? HY000 bedeutet ja eigendlich das eine Verbindung mit der Datenbank nicht hergestellt werden kann, aber die Installation hat ja nur Sekunden davor die Datenbank erstellt und dann auch noch beschrieben.  Sad


RE: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - StefanT - 10.07.2024

Dein Log ist leider wenig hilfreich, da die Fehlermeldung jedes Mal abgeschnitten ist. Da sollte eigentlich stehen, was der genaue Fehler ist. Spontan tippe ich auf einen fehlerhaften Pfad beim Pfad zu Datenbank-Datei.


RE: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - tim123456 - 11.07.2024

Der Pfad stimmt. Die Installation erstellt da die Datenbank und Tabellen erstellt, hab die Datenbank auch mit SQLite auf der CLI inspiriert und sie gut aus.

Ich hatte den Verdacht nun das die Datenbank korrupt wird durch verschiedene parallele FPM Prozesse und es scheint zu stimmen.

Ich habe die max Prozesse von FPM auf 1 beschränkt und dann gibt es keine Probleme mehr.

Ich verstehe nur nicht warum. SQLite unterstützt den Zugang von mehreren Prozessen gleichzeitig. Warum es hier nicht klappt ist mir nicht klar.

Vielleicht benutzt MyBB keine Transaktionen was bei Parallelem Zugriff problematisch werden könnte?

Oder das Locking Mechanismus von SQLite funktioniert auf irgendeinem Grund nicht. Vielleicht weil die Datenbank auf einem Dockerdateisystem ist? (Allerdings nicht auf einem Netzwerk Volume oder sonstigen Mount)

Falls jemand eine Idee hat, würde ich mich freuen.


RE: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - StefanT - 11.07.2024

Bei SQLite können durchaus Probleme bei gleichzeitigen Zugriffen auftreten, allerdings nicht in der Häufigkeit wie bei dir. Da muss irgendwas bei deinem Setup reinspielen.

Bei MySQL oder PostgreSQL gibt es diese Problematik nicht.


RE: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - tim123456 - 14.07.2024

Wenn ich pm.max_requests auf 1 setze, started jeder PHP-FPM Prozess nach dem er ein einzigen Request bedient hat... und dann gibt es auch keine SQLite Fehler.

Genauso funktioniert alles wenn ich den pm auf "static" setze, statt "ondemand".

Vielleicht wird be der bei per pm=ondemand Einstellung ein PHP-FPM Prozess geforked wird, inclusive offene Datenbank. In der SQLite Dokumentation steht dazu folgendes:

Zitat:Do not open an SQLite database connection, then fork(), then try to use that database connection in the child process. All kinds of locking problems will result and you can easily end up with a corrupt database. SQLite is not designed to support that kind of behavior. Any database connection that is used in a child process must be opened in the child process, not inherited from the parent.
Do not even call sqlite3_close() on a database connection from a child process if the connection was opened in the parent. It is safe to close the underlying file descriptor, but the sqlite3_close() interface might invoke cleanup activities that will delete content out from under the parent, leading to errors and perhaps even database corruption.

Zumindest kann ich mir vorstellen das bei ondemand der FPM Prozess geforked wird der schon die offene Databank hat, während bei static alle processes erstellt werden before FPM überhaupt MyBB code ausführen kann.


RE: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - StefanT - 14.07.2024

Unser Demo-Forum läuft auch mit SQLite und mir sind noch keine solchen Probleme aufgefallen. PHP-FPM läuft dabei ondemand mit mehreren Prozessen.


RE: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - tim123456 - 17.07.2024

Oh Spannend! Kannst du mir sagen welche Versionen von SQLite ihr dafür Benutzt, nur für den Fall das es was damit zu tun hat?

Meine:
PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.44.2


RE: Neuinstallation mit Sqlite 3 perfect; dann Fehler (HY000) beim ersten aufrufen - StefanT - 17.07.2024

Das ist ein Debian-Server, dort wird SQLite 3.40.1 verwendet.