Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QueryFailedError: SQLITE_ERROR: no such table: settings #1472

Closed
SSoft7 opened this issue Dec 29, 2024 · 5 comments
Closed

QueryFailedError: SQLITE_ERROR: no such table: settings #1472

SSoft7 opened this issue Dec 29, 2024 · 5 comments

Comments

@SSoft7
Copy link

SSoft7 commented Dec 29, 2024

Describe the bug
SQLite error on new install.

To Reproduce
Steps to reproduce the behavior:
Create a new docker image from scratch from node:20-alpine3.19

Expected behavior
Install without issues

Screenshots
N/A

Device (please complete the following information):

  • OS: Alpine Linux
  • Version tested v3.18 and v3.19

Additional context

The official docker image works fine but I'm trying to build my own image.
I've replicated almost everything from the official dockerfile but still can't fix this error.

Based on the previous issue #679

  1. You've mentioned It's a bug between Node.js 20+ and older Linux kernels. - I've tried building on alpine 3.18 which has node 18.20.1
  2. I'm also using UV_USE_IO_URING=0 env variable in my dockerfile but that also did not fix the issue.

I would like to understand why it is failing?

Log

> @maintainerr/[email protected] start:release
> node main

[maintainerr] | 29/12/2024 07:44:11  [INFO] [NestFactory] Starting Nest application...
[maintainerr] | 29/12/2024 07:44:11  [INFO] [PlexApiService] Plex API isn't fully initialized, required settings aren't set
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TypeOrmModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] ExternalApiModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] ServarrApiModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] DiscoveryModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] PlexApiModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] OverseerrApiModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TautulliApiModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] InternalApiModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TmdbApiModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] ScheduleModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] AppModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TypeOrmCoreModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TypeOrmModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TypeOrmModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TypeOrmModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TypeOrmModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TypeOrmModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] TasksModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] SettingsModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] CollectionsModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [InstanceLoader] RulesModule dependencies initialized
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] AppController {/api/app}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/app/status, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/app/timezone, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] SettingsController {/api/settings}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/radarr, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/sonarr, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/version, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/api/generate, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/plex/auth, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/plex/token, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/test/setup, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/test/overseerr, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/test/radarr, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/radarr, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/radarr/:id, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/radarr/:id, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/test/sonarr, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/sonarr, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/sonarr/:id, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/sonarr/:id, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/test/plex, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/test/tautulli, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/plex/devices/servers, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/settings/cron/validate, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] PlexApiController {/api/plex}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/libraries, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/:id/content/:page?, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/meta/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/meta/:id/seen, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/users, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/meta/:id/children, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/:id/recent, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/:id/collections, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/:collectionId, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/:collectionId/children, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/search/:input, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/:collectionId/child/:childId, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/:collectionId/child/:childId, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/update, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/create, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/:collectionId, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/plex/library/collection/settings, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] OverseerrApiController {/api/overseerr}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/overseerr/movie/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/overseerr/show/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/overseerr/request/:requestId, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/overseerr/media/:mediaId, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/overseerr/media/tmdb/:mediaId, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] TautulliApiController {/api/tautulli}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] InternalApiController {/api/maintainerr}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] TmdbApiController {/api/moviedb}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/moviedb/person/:personId, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/moviedb/movie/imdb/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/moviedb/image/:type/:tmdbId, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] RulesController {/api/rules}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/constants, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/schedule/update, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/community, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/community/count, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/community/karma/history, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/exclusion, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/count, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/collection/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/:id, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/execute, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/exclusion, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/exclusion/:id, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/exclusions/:plexId, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/community, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/community/karma, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/yaml/encode, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/yaml/decode, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/rules/test, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RoutesResolver] CollectionsController {/api/collections}:
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/add, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/remove, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/removeCollection, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/handle, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/schedule/update, PUT} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/deactivate/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/activate/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/collection/:id, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/media/add, POST} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/media, DELETE} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/media, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/media/count, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/media/:id/content/:page, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/exclusions/:id/content/:page, GET} route
[maintainerr] | 29/12/2024 07:44:11  [INFO] [RouterExplorer] Mapped {/api/collections/logs/:id/content/:page, GET} route
/app/maintainerr/server/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:88
                        return fail(new QueryFailedError_1.QueryFailedError(query, parameters, err));
                                    ^

QueryFailedError: SQLITE_ERROR: no such table: settings
    at handler (/app/maintainerr/server/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:88:37)
    at replacement (/app/maintainerr/server/node_modules/sqlite3/lib/trace.js:25:27)
    at Statement.errBack (/app/maintainerr/server/node_modules/sqlite3/lib/sqlite3.js:15:21) {
  query: 'SELECT "Settings"."id" AS "Settings_id", "Settings"."clientId" AS "Settings_clientId", "Settings"."applicationTitle" AS "Settings_applicationTitle", "Settings"."applicationUrl" AS "Settings_applicationUrl", "Settings"."apikey" AS "Settings_apikey", "Settings"."overseerr_url" AS "Settings_overseerr_url", "Settings"."locale" AS "Settings_locale", "Settings"."cacheImages" AS "Settings_cacheImages", "Settings"."plex_name" AS "Settings_plex_name", "Settings"."plex_hostname" AS "Settings_plex_hostname", "Settings"."plex_port" AS "Settings_plex_port", "Settings"."plex_ssl" AS "Settings_plex_ssl", "Settings"."plex_auth_token" AS "Settings_plex_auth_token", "Settings"."overseerr_api_key" AS "Settings_overseerr_api_key", "Settings"."tautulli_url" AS "Settings_tautulli_url", "Settings"."tautulli_api_key" AS "Settings_tautulli_api_key", "Settings"."collection_handler_job_cron" AS "Settings_collection_handler_job_cron", "Settings"."rules_handler_job_cron" AS "Settings_rules_handler_job_cron" FROM "settings" "Settings" LIMIT 1',
  parameters: [],
  driverError: Error: SQLITE_ERROR: no such table: settings
  --> in Database#all('SELECT "Settings"."id" AS "Settings_id", "Settings"."clientId" AS "Settings_clientId", "Settings"."applicationTitle" AS "Settings_applicationTitle", "Settings"."applicationUrl" AS "Settings_applicationUrl", "Settings"."apikey" AS "Settings_apikey", "Settings"."overseerr_url" AS "Settings_overseerr_url", "Settings"."locale" AS "Settings_locale", "Settings"."cacheImages" AS "Settings_cacheImages", "Settings"."plex_name" AS "Settings_plex_name", "Settings"."plex_hostname" AS "Settings_plex_hostname", "Settings"."plex_port" AS "Settings_plex_port", "Settings"."plex_ssl" AS "Settings_plex_ssl", "Settings"."plex_auth_token" AS "Settings_plex_auth_token", "Settings"."overseerr_api_key" AS "Settings_overseerr_api_key", "Settings"."tautulli_url" AS "Settings_tautulli_url", "Settings"."tautulli_api_key" AS "Settings_tautulli_api_key", "Settings"."collection_handler_job_cron" AS "Settings_collection_handler_job_cron", "Settings"."rules_handler_job_cron" AS "Settings_rules_handler_job_cron" FROM "settings" "Settings" LIMIT 1', [], [Function: handler])
      at execute (/app/maintainerr/server/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:67:50)
      at /app/maintainerr/server/node_modules/typeorm/driver/sqlite/SqliteQueryRunner.js:111:23 {
    errno: 1,
    code: 'SQLITE_ERROR',
    __augmented: true
  },
  errno: 1,
  code: 'SQLITE_ERROR',
  __augmented: true
}
@benscobie
Copy link
Collaborator

Probably not going to have time to look into this as you're doing your own thing. Have you mapped a volume to /opt/data?

Is there something missing from the official image?

@SSoft7
Copy link
Author

SSoft7 commented Dec 29, 2024

Probably not going to have time to look into this as you're doing your own thing. Have you mapped a volume to /opt/data?

Is there something missing from the official image?

@benscobie Thank you for your response.
Yes, I've mapped a volume to /opt/data.

There's nothing missing from the official image that any regular user would need. However, I customize images based on my own base image for easier modifications in the future.

To simplify things for you, I've prepared quick reproduction steps:

Host OS - Ubuntu 22.04 - Kernel 5.15.0-130-generic

Step 1: Create a generic Alpine container.

Alpine 3.19 - Node 20
docker run -it --rm -v "/tmp/maintainerr:/opt/data/" alpine:3.19 sh

Alpine 3.19 - Node 18
docker run -it --rm -v "/tmp/maintainerr:/opt/data/" alpine:3.18 sh

Step 2: Copy and paste the following one-liner script into the container and execute it:

https://pastebin.com/raw/njQGRnLE

As you can see, this is not working on a generic non-customized docker image.

It would be nice if you can point out what's wrong.

@benscobie
Copy link
Collaborator

Our paths are mostly all hard coded at the moment, so /app/maintainerr/ isn't going to work, see:

? ['/opt/app/server/database/migrations/**/*{.js,.ts}']

I'm working on creating artifacts as part of the release process so we can support more than just Docker. That piece of work has env vars to control these paths so you'd be able to use that in the future. There's no ETA when I'll be done with that though.

@SSoft7
Copy link
Author

SSoft7 commented Dec 29, 2024

Our paths are mostly all hard coded at the moment, so /app/maintainerr/ isn't going to work, see:

? ['/opt/app/server/database/migrations/**/*{.js,.ts}']

I'm working on creating artifacts as part of the release process so we can support more than just Docker. That piece of work has env vars to control these paths so you'd be able to use that in the future. There's no ETA when I'll be done with that though.

Thank you for pointing out. Changing the path to default fixed the issue.

@benscobie
Copy link
Collaborator

Glad to hear it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants