BookLore icon indicating copy to clipboard operation
BookLore copied to clipboard

Booklore not starting; DB connection fails

Open ianhyzy opened this issue 4 months ago • 8 comments

Bug Report Template for Booklore

What happened?
Booklore does not start on Synology device with Container Manager

How can we see it happen?
Steps to reproduce the issue:

  1. Create new "Project" and enter a booklore docker-compose yaml
  2. Start booklore
  3. It fails with the error
Message    : Host 'booklore.booklore_default' is not allowed to connect to this MariaDB server
Error Code : 1130
SQL State  : HY000

About your setup:

  • Booklore version 38.0
  • Docker-compose using Synology container manager

I think related to this issue: https://github.com/booklore-app/booklore/issues/966

ianhyzy avatar Aug 24 '25 17:08 ianhyzy

This docker-compose worked:

services:
  booklore:
    # Official Docker Hub image:
    image: booklore/booklore:latest
    # Or the GHCR image:
    # image: ghcr.io/booklore-app/booklore:latest
    container_name: booklore
    environment:
      - PUID=1026
      - PGID=100
      - TZ=America/Chicago
      - DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore   # Only modify this if you're familiar with JDBC and your database setup
      - DATABASE_USERNAME=booklore                          # Must match MYSQL_USER defined in the mariadb container
      - DATABASE_PASSWORD=111              # Use a strong password; must match MYSQL_PASSWORD defined in the mariadb container 
      - BOOKLORE_PORT=6060                                  # Port BookLore listens on inside the container; must match container port below
      - SWAGGER_ENABLED=false                               # Enable or disable Swagger UI (API docs). Set to 'true' to allow access; 'false' to block access (recommended for production).
    depends_on:
      mariadb:
        condition: service_healthy
    ports:
      - "6060:6060" # HostPort:ContainerPort → Keep both numbers the same, and also ensure the container port matches BOOKLORE_PORT, no exceptions. 
                    # All three (host port, container port, BOOKLORE_PORT) must be identical for BookLore to function properly.
                    # Example: To expose on host port 8080, set BOOKLORE_PORT=8080 and use "8080:8080". 
    volumes:
      - /volume1/Vault/configs/booklore/data:/app/data       # Application data (settings, metadata, cache, etc.). Persist this folder to retain your library state across container restarts.
      - /volume1/Vault/media/books:/books         # Primary book library folder. Mount your collection here so BookLore can access and organize your books.
      - /volume1/Vault/watch/bookdrop:/bookdrop   # BookDrop folder. Files placed here are automatically detected and prepared for import.
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.5
    container_name: mariadb
    environment:
      - PUID=1026
      - PGID=100
      - TZ=America/Chicago
      - MYSQL_ROOT_PASSWORD=111
      - MYSQL_DATABASE=booklore
      - MYSQL_USER=booklore
      - MYSQL_PASSWORD=111
    volumes:
      - /volume1/Vault/configs/booklore/mariadb:/config
      - /volume1/Vault/configs/booklore/mariadb_data:/var/lib/mysql
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 5s
      retries: 10

ianhyzy avatar Aug 24 '25 18:08 ianhyzy

I have the same problem but that docker compose doesn't work for me.

mittensicle avatar Aug 26 '25 18:08 mittensicle

I have the same problem but that docker compose doesn't work for me.

Can you post yours and the error you're getting? You may need to change the PGID/PUID as well as the paths

ianhyzy avatar Aug 26 '25 18:08 ianhyzy

I have the same problem but that docker compose doesn't work for me.

Can you post yours and the error you're getting? You may need to change the PGID/PUID as well as the paths

services:
  booklore:
    # Official Docker Hub image:
    image: booklore/booklore:latest
    # Or the GHCR image:
    # image: ghcr.io/booklore-app/booklore:latest
    container_name: booklore
    environment:
      - PUID=1030
      - PGID=100
      - TZ=America/Edmonton
      - DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore   # Only modify if you know JDBC and your database setup
      - DATABASE_USERNAME=booklore                          # Must match MYSQL_USER defined in the mariadb container
      - DATABASE_PASSWORD=password1        # Must match MYSQL_PASSWORD defined in the mariadb container
      - BOOKLORE_PORT=6060                                  # Must match ports mapping (host:container) below
      - SWAGGER_ENABLED=false                               # Swagger UI disabled by default for production
    depends_on:
      mariadb:
        condition: service_healthy
    ports:
      - "6060:6060" # HostPort:ContainerPort. Must match BOOKLORE_PORT.
    volumes:
      - /volume2/docker/booklore/data:/app/data             # Application data (persist across restarts)
      - /volume1/data/media/library/books:/books            # Ebook library
      - /volume1/data/media/library/bookdrop:/bookdrop      # BookDrop folder
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.5
    container_name: mariadb
    environment:
      - PUID=1030
      - PGID=100
      - TZ=America/Edmonton
      - MYSQL_ROOT_PASSWORD=password2    # Root password (recommend setting different from MYSQL_PASSWORD for extra security)
      - MYSQL_DATABASE=booklore
      - MYSQL_USER=booklore
      - MYSQL_PASSWORD=password1       # Must match DATABASE_PASSWORD above
    volumes:
      - /volume2/docker/booklore/mariadb/config:/config
      - /volume2/docker/booklore/mariadb/var/lib/mysql
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 5s
      retries: 10

Mariadb log:

[migrations] started
[migrations] no migrations found
───────────────────────────────────────
      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝
   Brought to you by linuxserver.io
───────────────────────────────────────
To support LSIO projects visit:
https://www.linuxserver.io/donate/
───────────────────────────────────────
GID/UID
───────────────────────────────────────
User UID:    1030
User GID:    100
───────────────────────────────────────
Linuxserver.io version: 11.4.5-r2-ls192
Build-date: 2025-08-26T07:46:30+00:00
───────────────────────────────────────
    
[custom-init] No custom files found, skipping...
Warning: World-writable config file '/config/custom.cnf' is ignored
Warning: World-writable config file '/config/custom.cnf' is ignored
250828 11:12:40 mysqld_safe Logging to '/config/databases/344c977499ef.err'.
250828 11:12:40 mysqld_safe Starting mariadbd daemon with databases from /config/databases
Connection to localhost (127.0.0.1) 3306 port [tcp/mysql] succeeded!
Logrotate is enabled
[ls.io-init] done.

Booklore log:

	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1683) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1628) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-6.2.8.jar!/:6.2.8]
	... 84 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appSettingsRepository' defined in com.adityachandel.booklore.repository.AppSettingsRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot resolve reference to bean 'jpaSharedEM_entityManagerFactory' while setting bean property 'entityManager'
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:377) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:135) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1725) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1474) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1683) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1628) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-6.2.8.jar!/:6.2.8]
	... 97 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaSharedEM_entityManagerFactory': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:377) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:135) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:691) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:513) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:365) ~[spring-beans-6.2.8.jar!/:6.2.8]
	... 110 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Unable to obtain connection from database: Socket timeout when connecting to mariadb. Connect timed out
-------------------------------------------------------------------------------------------------------
SQL State  : 08000
Error Code : 0
Message    : Socket timeout when connecting to mariadb. Connect timed out
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1826) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:365) ~[spring-beans-6.2.8.jar!/:6.2.8]
	... 122 common frames omitted
Caused by: org.flywaydb.core.internal.exception.FlywaySqlException: Unable to obtain connection from database: Socket timeout when connecting to mariadb. Connect timed out
-------------------------------------------------------------------------------------------------------
SQL State  : 08000
Error Code : 0
Message    : Socket timeout when connecting to mariadb. Connect timed out
	at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:71) ~[flyway-core-11.7.2.jar!/:na]
	at org.flywaydb.core.internal.jdbc.JdbcConnectionFactory.<init>(JdbcConnectionFactory.java:76) ~[flyway-core-11.7.2.jar!/:na]
	at org.flywaydb.core.FlywayExecutor.execute(FlywayExecutor.java:136) ~[flyway-core-11.7.2.jar!/:na]
	at org.flywaydb.core.Flyway.migrate(Flyway.java:188) ~[flyway-core-11.7.2.jar!/:na]
	at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:66) ~[spring-boot-autoconfigure-3.5.1.jar!/:3.5.1]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1873) ~[spring-beans-6.2.8.jar!/:6.2.8]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) ~[spring-beans-6.2.8.jar!/:6.2.8]
	... 131 common frames omitted
Caused by: java.sql.SQLTimeoutException: Socket timeout when connecting to mariadb. Connect timed out
	at org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:124) ~[mariadb-java-client-3.5.4.jar!/:na]
	at org.mariadb.jdbc.client.impl.StandardClient.<init>(StandardClient.java:125) ~[mariadb-java-client-3.5.4.jar!/:na]
	at org.mariadb.jdbc.Driver.connect(Driver.java:75) ~[mariadb-java-client-3.5.4.jar!/:na]
	at org.mariadb.jdbc.Driver.connect(Driver.java:104) ~[mariadb-java-client-3.5.4.jar!/:na]
	at org.mariadb.jdbc.Driver.connect(Driver.java:29) ~[mariadb-java-client-3.5.4.jar!/:na]
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:139) ~[HikariCP-6.3.0.jar!/:na]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:368) ~[HikariCP-6.3.0.jar!/:na]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:205) ~[HikariCP-6.3.0.jar!/:na]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:483) ~[HikariCP-6.3.0.jar!/:na]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:571) ~[HikariCP-6.3.0.jar!/:na]
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:101) ~[HikariCP-6.3.0.jar!/:na]
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) ~[HikariCP-6.3.0.jar!/:na]
	at org.flywaydb.core.internal.jdbc.JdbcUtils.openConnection(JdbcUtils.java:59) ~[flyway-core-11.7.2.jar!/:na]
	... 137 common frames omitted
Caused by: java.net.SocketTimeoutException: Connect timed out
	at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(Unknown Source) ~[na:na]
	at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source) ~[na:na]
	at java.base/java.net.SocksSocketImpl.connect(Unknown Source) ~[na:na]
	at java.base/java.net.Socket.connect(Unknown Source) ~[na:na]
	at org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:118) ~[mariadb-java-client-3.5.4.jar!/:na]
	... 149 common frames omitted
Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts

mittensicle avatar Aug 28 '25 17:08 mittensicle

I had the same issue.

To make it work, once mariadb is up, I had to connect to mariadb with a docker terminal and : 1.Change the permission of root user in mariadb to be accessed from all host (by renaming root@localhost to root@%) 2.Create the booklore user and change it access right (same as root user) 3.create the database booklore in mariadb

once it's done, launch booklore and it should be ok.

Clearly not ideal but it worked.

franckdelalandre avatar Sep 02 '25 16:09 franckdelalandre

I had the similar problem w

It seems this might be a timing issue.

MariaDB does create the correct user permissions. I verified this inside the MariaDB container as follows:

Initially, I tried logging in:

docker exec -it maria-db bin/bash mariadb -u root

At first, I got the error:

ERROR 2002 (HY000): Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)

After a few minutes, I was able to log in successfully with:

mariadb -u root

I then checked the user permissions:

SELECT User, Host, plugin FROM mysql.user;

Output:

+-------------+--------------+-----------------------+
| User        | Host         | plugin                |
+-------------+--------------+-----------------------+
| mariadb.sys | localhost    | mysql_native_password |
| root        | localhost    |                       |
| root        | 14968a393d62 |                       |
| root        | 127.0.0.1    |                       |
| root        | ::1          |                       |
| root        | %            | mysql_native_password |
| booklore    | %            | mysql_native_password |
+-------------+--------------+-----------------------+

Everything looks correct as the users are setup correctly. By the time I ran this, the booklore container had already attempted to connect multiple times, failed, and stopped. After restarting it, it connected successfully.

TL;DR: It looks like the booklore container is trying to access MariaDB with the booklore user before the user permissions are fully set up.

yashwalankar avatar Oct 04 '25 19:10 yashwalankar

I gave this a long time to deploy, and it never seemed to create the user or the DB. In the end I shut down the booklore app, entered MariaDB CLI and did the following to make it work:

docker exec -it mariadb /bin/bash
mariadb -u root
CREATE USER 'booklore'@'%' identified by 'passwordfromcomposefile';
CREATE DATABASE booklore;
GRANT ALL PRIVILEGES ON *.* TO 'booklore'@'%' identified by 'passwordfromcomposefile';
flush privileges;

I am unsure if the 'GRANT ALL' is necessary, but it seemed like it wouldn't hurt. After that, starting the booklore app enabled it to connect and populate the DB.

mahood73 avatar Oct 09 '25 10:10 mahood73

I had to apply the fix above. This project should just be on sqlite, to avoid issues like this

ckozak avatar Nov 30 '25 05:11 ckozak