Mysql error on Bookstack
-
My Bookstack instance running on Cloudron has suddenly run into problems. TLDR there is an mysql error in the log file.
Version: 2.0.3 and my previous backed up version 1.46.8.
This error occurred suddenly. I haven't used the application for several months, and the state of the application is: not responding.
Mitigations:
I have tried to revert to a backup from a previous version, before updates, and it also has this issue, so it must have been sitting there not responding for a while.Mysql button is inactive and does not work, when I go to the TERMINAL area in the Cloudron interface, since the app itself is "not responding". Message repeating is "Reconnecting ..."
There are no out of memory or out of disk space errors reported by the system.
I have root on the virtual server it is running on.
Log dump from after a restore, which displays the error:
Apr 13 11:02:19 restoring Apr 13 11:02:20 2026-04-13 09:02:20,158 INFO waiting for redis to stop Apr 13 11:02:20 2026-04-13 09:02:20,220 INFO stopped: redis (exit status 0) Apr 13 11:02:20 2026-04-13 09:02:20,766 INFO spawned: 'redis' with pid 688 Apr 13 11:02:20 661:M 13 Apr 2026 09:02:20.212 * BGSAVE done, 0 keys saved, 0 keys skipped, 88 bytes written. Apr 13 11:02:20 661:M 13 Apr 2026 09:02:20.212 * Saving the final RDB snapshot before exiting. Apr 13 11:02:20 661:M 13 Apr 2026 09:02:20.212 * User requested shutdown... Apr 13 11:02:20 661:M 13 Apr 2026 09:02:20.216 # Redis is now ready to exit, bye bye... Apr 13 11:02:20 661:M 13 Apr 2026 09:02:20.216 * DB saved on disk Apr 13 11:02:20 661:M 13 Apr 2026 09:02:20.216 * Removing the pid file. Apr 13 11:02:20 661:signal-handler (1776070940) Received SIGTERM scheduling shutdown... Apr 13 11:02:20 688:C 13 Apr 2026 09:02:20.785 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. Apr 13 11:02:20 688:C 13 Apr 2026 09:02:20.786 * Configuration loaded Apr 13 11:02:20 688:C 13 Apr 2026 09:02:20.786 * Redis version=8.4.0, bits=64, commit=00000000, modified=1, pid=688, just started Apr 13 11:02:20 688:C 13 Apr 2026 09:02:20.786 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.786 * Increased maximum number of open files to 10032 (it was originally set to 1024). Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.786 * monotonic clock: POSIX clock_gettime Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.789 # Failed to write PID file: Permission denied Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.789 * Running mode=standalone, port=6379. Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.790 * DB loaded from disk: 0.000 seconds Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.790 * Done loading RDB, keys loaded: 0, keys expired: 0. Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.790 * Loading RDB produced by version 8.4.0 Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.790 * RDB age 84347 seconds Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.790 * RDB memory usage when created 0.89 Mb Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.790 * Ready to accept connections tcp Apr 13 11:02:20 688:M 13 Apr 2026 09:02:20.790 * Server initialized Apr 13 11:02:21 tasks: updating task 33246 with: {"percent":80,"message":"Creating container"} Apr 13 11:02:21 apptask: createContainer: creating container Apr 13 11:02:21 2026-04-13 09:02:21,792 INFO success: redis entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) Apr 13 11:02:22 shell: apptask: /usr/bin/sudo --non-interactive /home/yellowtent/box/src/scripts/configurelogrotate.sh add fea2ee06-093a-4025-ae2a-f9751391cfd8 /tmp/fea2ee06-093a-4025-ae2a-f9751391cfd8.logrotate Apr 13 11:02:22 apptask: startApp: starting container Apr 13 11:02:22 tasks: updating task 33246 with: {"percent":95,"message":"Configuring reverse proxy"} Apr 13 11:02:22 shell: openssl: openssl x509 -noout -subject -issuer Apr 13 11:02:22 reverseproxy: providerMatches: subject=CN = *.redactedfoobar.com domain=*.redactedfoobar.com issuer=C = US, O = Let's Encrypt, CN = R12 wildcard=true/true prod=true/true issuerMismatch=false wildcardMismatch=false match=true Apr 13 11:02:22 shell: openssl: openssl x509 -startdate -enddate -subject -noout Apr 13 11:02:22 openssl: expiryDate: subject=CN = *.redactedfoobar.com notBefore=Mar 10 04:11:58 2026 GMT notAfter=Jun 8 04:11:57 2026 GMT daysLeft=55.79831126157407 Apr 13 11:02:22 reverseproxy: ensureCertificate: candlekeep.redactedfoobar.com acme cert exists and is up to date Apr 13 11:02:22 reverseproxy: needsRenewal: false. force: false Apr 13 11:02:22 shell: openssl: openssl x509 -noout -subject -issuer Apr 13 11:02:22 reverseproxy: providerMatches: subject=CN = *.redacted.foobar domain=*.redacted.foobar issuer=C = US, O = Let's Encrypt, CN = R13 wildcard=true/true prod=true/true issuerMismatch=false wildcardMismatch=false match=true Apr 13 11:02:22 shell: openssl: openssl x509 -startdate -enddate -subject -noout Apr 13 11:02:22 openssl: expiryDate: subject=CN = *.redacted.foobar notBefore=Mar 10 04:12:25 2026 GMT notAfter=Jun 8 04:12:24 2026 GMT daysLeft=55.79862304398148 Apr 13 11:02:22 reverseproxy: ensureCertificate: candlekeep.redacted.foobar acme cert exists and is up to date Apr 13 11:02:22 reverseproxy: needsRenewal: false. force: false Apr 13 11:02:22 reverseproxy: writeAppLocationNginxConfig: writing config for "candlekeep.redactedfoobar.com" to /home/yellowtent/platformdata/nginx/applications/fea2ee06-093a-4025-ae2a-f9751391cfd8/candlekeep.redactedfoobar.com.conf with options {"sourceDir":"/home/yellowtent/box","vhost":"candlekeep.redactedfoobar.com","hasIPv6":true,"ip":"172.18.17.66","port":8000,"endpoint":"app","redirectTo":null,"certFilePath":"/home/yellowtent/platformdata/nginx/cert/_.redactedfoobar.com.cert","keyFilePath":"/home/yellowtent/platformdata/nginx/cert/_.redactedfoobar.com.key","robotsTxtQuoted":null,"cspQuoted":null,"hideHeaders":[],"proxyAuth":{"enabled":false,"id":"fea2ee06-093a-4025-ae2a-f9751391cfd8","location":"/"},"upstreamUri":"","hstsPreload":false} Apr 13 11:02:22 reverseproxy: writeAppLocationNginxConfig: writing config for "candlekeep.redacted.foobar" to /home/yellowtent/platformdata/nginx/applications/fea2ee06-093a-4025-ae2a-f9751391cfd8/candlekeep.redacted.foobar.conf with options {"sourceDir":"/home/yellowtent/box","vhost":"candlekeep.redacted.foobar","hasIPv6":true,"ip":null,"port":null,"endpoint":"redirect","redirectTo":"candlekeep.redactedfoobar.com","certFilePath":"/home/yellowtent/platformdata/nginx/cert/_.redacted.foobar.cert","keyFilePath":"/home/yellowtent/platformdata/nginx/cert/_.redacted.foobar.key","robotsTxtQuoted":null,"cspQuoted":null,"hideHeaders":[],"proxyAuth":{"enabled":false,"id":"fea2ee06-093a-4025-ae2a-f9751391cfd8","location":"/"},"upstreamUri":"","hstsPreload":false} Apr 13 11:02:22 shell: reverseproxy: /usr/bin/sudo --non-interactive /home/yellowtent/box/src/scripts/restartservice.sh nginx Apr 13 11:02:23 tasks: updating task 33246 with: {"percent":100,"message":"Done"} Apr 13 11:02:23 tasks: setCompleted - 33246: {"result":null,"error":null,"percent":100} Apr 13 11:02:23 tasks: updating task 33246 with: {"completed":true,"result":null,"error":null,"percent":100} Apr 13 11:02:23 taskworker: Task took 51.848 seconds Apr 13 11:02:23 Exiting with code 0 Apr 13 11:02:47 2026-04-13T09:02:47Z Apr 13 11:02:47 2026-04-13T09:02:47Z Apr 13 11:02:47 In Connector.php line 66: Apr 13 11:02:47 Apr 13 11:02:47 Apr 13 11:02:47 Apr 13 11:02:47 SQLSTATE[HY000] [1129] Host 'fd00:c107:d509::1' is blocked because of many Apr 13 11:02:47 connection errors; unblock with 'mysqladmin flush-hosts' Apr 13 11:02:57 => Healthcheck error: AbortError: The operation was aborted Apr 13 11:03:00 => Healthcheck error: Error: connect ECONNREFUSED 172.18.17.66:8000 Apr 13 11:03:00 => Existing installation. Running migration script Apr 13 11:03:01 2026-04-13T09:03:01Z Apr 13 11:03:01 2026-04-13T09:03:01Z Apr 13 11:03:01 2026-04-13T09:03:01Z Apr 13 11:03:01 In Connection.php line 838: Apr 13 11:03:01 In Connector.php line 66: Apr 13 11:03:01 Apr 13 11:03:01 Apr 13 11:03:01 Apr 13 11:03:01 Apr 13 11:03:01 ')) as `exists`) Apr 13 11:03:01 , Host: mysql, Port: 3306, Database: a26fda2d0da8ad31, SQL: select exists ( Apr 13 11:03:01 SQLSTATE[HY000] [1129] Host 'fd00:c107:d509::1' is blocked because of many Apr 13 11:03:01 SQLSTATE[HY000] [1129] Host 'fd00:c107:d509::1' is blocked because of many Apr 13 11:03:01 able_name = 'migrations' and table_type in ('BASE TABLE', 'SYSTEM VERSIONED Apr 13 11:03:01 connection errors; unblock with 'mysqladmin flush-hosts' Apr 13 11:03:01 connection errors; unblock with 'mysqladmin flush-hosts' (Connection: mysql Apr 13 11:03:01 select 1 from information_schema.tables where table_schema = schema() and t Apr 13 11:03:13 => Healthcheck error: Error: connect EHOSTUNREACH 172.18.17.66:8000 Apr 13 11:03:23 => Healthcheck error: Error: connect EHOSTUNREACH 172.18.17.66:8000 Apr 13 11:03:27 => Existing installation. Running migration script Apr 13 11:03:28 2026-04-13T09:03:28Z Apr 13 11:03:28 2026-04-13T09:03:28Z Apr 13 11:03:28 2026-04-13T09:03:28Z Apr 13 11:03:28 In Connection.php line 838: Apr 13 11:03:28 In Connector.php line 66: Apr 13 11:03:28 Apr 13 11:03:28 Apr 13 11:03:28 Apr 13 11:03:28 Apr 13 11:03:28 ')) as `exists`) **Apr 13 11:03:28 , Host: mysql, Port: 3306, Database: a26fda2d0da8ad31, SQL: select exists ( Apr 13 11:03:28 SQLSTATE[HY000] [1129] Host 'fd00:c107:d509::1' is blocked because of many Apr 13 11:03:28 SQLSTATE[HY000] [1129] Host 'fd00:c107:d509::1' is blocked because of many Apr 13 11:03:28 able_name = 'migrations' and table_type in ('BASE TABLE', 'SYSTEM VERSIONED Apr 13 11:03:28 connection errors; unblock with 'mysqladmin flush-hosts' Apr 13 11:03:28 connection errors; unblock with 'mysqladmin flush-hosts' (Connection: mysql Apr 13 11:03:28 select 1 from information_schema.tables where table_schema = schema() and t Apr 13 11:03:37 => Healthcheck error: AbortError: The operation was aborted Apr 13 11:03:43 => Healthcheck error: Error: connect EHOSTUNREACH 172.18.17.66:8000** Apr 13 11:03:53 => Healthcheck error: Error: connect EHOSTUNREACH 172.18.17.66:8000 Apr 13 11:04:03 => Healthcheck error: Error: connect EHOSTUNREACH 172.18.17.66:8000 Apr 13 11:04:13 => Healthcheck error: Error: connect EHOSTUNREACH 172.18.17.66:8000 Apr 13 11:04:20 => Healthcheck error: Error: connect ECONNREFUSED 172.18.17.66:8000 -
Hello @makemrproper
I want to make sure this is not a temporary MySQL issue.
Could you please try to restart the MySQL service and try again?
If this did not help, please restart the whole server and retry.If the issue persists we can continue investigating.
-
Hello @makemrproper
I want to make sure this is not a temporary MySQL issue.
Could you please try to restart the MySQL service and try again?
If this did not help, please restart the whole server and retry.If the issue persists we can continue investigating.
Hello @makemrproper
I want to make sure this is not a temporary MySQL issue.
Could you please try to restart the MySQL service and try again?
If this did not help, please restart the whole server and retry.If the issue persists we can continue investigating.
This worked!
I really ought to have tried that before contacting you

I restarted the Mysql service and Cloudron was able to start up.Curiously, the space used by Mysql was 1200mb before restart and 294mb after restart.
Thanks and have a nice day
-
Hello @makemrproper
The following log line made me think this might be temporary MySQL issue:
Apr 13 11:02:47 SQLSTATE[HY000] [1129] Host 'fd00:c107:d509::1' is blocked because of many Apr 13 11:02:47 connection errors; unblock with 'mysqladmin flush-hosts'If you see such a log entry, it might be a pointer that it might be just the MySQL service.
I should have tried that before contacting you
Please never hesitate to ask in the forum when you have any issues, like you have done here.
We have seen many issues and logs and can use that knowledge to quickly get a picture of a situation.
The good old "have you tried turning it off and on again" is something that can be attempted almost always.We are always happy to help since there should be no issue in the first place.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login