[Bug]: Server Crash at Startup #2591

Closed
opened 2026-04-25 00:08:44 +02:00 by adam · 4 comments
Owner

Originally created by @ralob on GitHub (Feb 19, 2025).

What happened?

Audiobookshelf immediately crashes upon start.

What did you expect to happen?

Server to launch.

Steps to reproduce the issue

  1. Pull latest docker image (2.19.3)
  2. Start container

Audiobookshelf version

2.19.3

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Other (list in "Additional Notes" box)

If the issue is being seen in the UI, what browsers are you seeing the problem on?

None

Logs

Running in production mode.
Options: CONFIG_PATH=/config, METADATA_PATH=/metadata, PORT=80, HOST=undefined, SOURCE=docker, ROUTER_BASE_PATH=/audiobookshelf
[2025-02-19 16:57:12.526] INFO: === Starting Server ===
[2025-02-19 16:57:12.531] INFO: [Server] Init v2.19.3
[2025-02-19 16:57:12.531] INFO: [Server] Node.js Version: v20.18.3
[2025-02-19 16:57:12.531] INFO: [Server] Platform: linux
[2025-02-19 16:57:12.532] INFO: [Server] Arch: x64
[2025-02-19 16:57:12.552] INFO: [Database] Initializing db at "/config/absdatabase.sqlite"
[2025-02-19 16:57:12.570] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so
[2025-02-19 16:57:12.571] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so
[2025-02-19 16:57:12.571] INFO: [Database] Db supports unaccent and unicode foldings
[2025-02-19 16:57:12.572] INFO: [Database] Db connection was successful
[2025-02-19 16:57:12.577] INFO: [MigrationManager] Database is already up to date.
[2025-02-19 16:57:12.696] INFO: [Database] Db initialized with models: user, library, libraryFolder, book, podcast, podcastEpisode, libraryItem, mediaProgress, series, bookSeries, author, bookAuthor, collection, collectionBook, playlist, playlistMediaItem, device, playbackSession, feed, feedEpisode, setting, customMetadataProvider, mediaItemShare
[2025-02-19 16:57:12.713] FATAL: [Server] Unhandled rejection: Error
    at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
    at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
    at new Promise (<anonymous>)
    at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
    at /node_modules/sequelize/lib/sequelize.js:315:28
    at async SQLiteQueryInterface.select (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)
    at async podcast.findAll (/node_modules/sequelize/lib/model.js:1140:21)
    at async Database.cleanDatabase (/server/Database.js:660:39)
    at async Database.loadData (/server/Database.js:383:5)
    at async Database.init (/server/Database.js:193:5) {
  name: 'SequelizeDatabaseError',
  parent: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] {
    errno: 1,
    code: 'SQLITE_ERROR',
    sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;"
  },
  original: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] {
    errno: 1,
    code: 'SQLITE_ERROR',
    sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;"
  },
  sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;",
  parameters: {}
} 
promise: Promise {
  <rejected> Error
      at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
      at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
      at new Promise (<anonymous>)
      at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
      at /node_modules/sequelize/lib/sequelize.js:315:28
      at async SQLiteQueryInterface.select (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)
      at async podcast.findAll (/node_modules/sequelize/lib/model.js:1140:21)
      at async Database.cleanDatabase (/server/Database.js:660:39)
      at async Database.loadData (/server/Database.js:383:5)
      at async Database.init (/server/Database.js:193:5) {
    name: 'SequelizeDatabaseError',
    parent: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] {
      errno: 1,
      code: 'SQLITE_ERROR',
      sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;"
    },
    original: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] {
      errno: 1,
      code: 'SQLITE_ERROR',
      sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;"
    },
    sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;",
    parameters: {}
  }
}

Additional Notes

OS: Synology DSM 7.2.2

Originally created by @ralob on GitHub (Feb 19, 2025). ### What happened? Audiobookshelf immediately crashes upon start. ### What did you expect to happen? Server to launch. ### Steps to reproduce the issue 1. Pull latest docker image (2.19.3) 2. Start container ### Audiobookshelf version 2.19.3 ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Other (list in "Additional Notes" box) ### If the issue is being seen in the UI, what browsers are you seeing the problem on? None ### Logs ```shell Running in production mode. Options: CONFIG_PATH=/config, METADATA_PATH=/metadata, PORT=80, HOST=undefined, SOURCE=docker, ROUTER_BASE_PATH=/audiobookshelf [2025-02-19 16:57:12.526] INFO: === Starting Server === [2025-02-19 16:57:12.531] INFO: [Server] Init v2.19.3 [2025-02-19 16:57:12.531] INFO: [Server] Node.js Version: v20.18.3 [2025-02-19 16:57:12.531] INFO: [Server] Platform: linux [2025-02-19 16:57:12.532] INFO: [Server] Arch: x64 [2025-02-19 16:57:12.552] INFO: [Database] Initializing db at "/config/absdatabase.sqlite" [2025-02-19 16:57:12.570] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so [2025-02-19 16:57:12.571] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so [2025-02-19 16:57:12.571] INFO: [Database] Db supports unaccent and unicode foldings [2025-02-19 16:57:12.572] INFO: [Database] Db connection was successful [2025-02-19 16:57:12.577] INFO: [MigrationManager] Database is already up to date. [2025-02-19 16:57:12.696] INFO: [Database] Db initialized with models: user, library, libraryFolder, book, podcast, podcastEpisode, libraryItem, mediaProgress, series, bookSeries, author, bookAuthor, collection, collectionBook, playlist, playlistMediaItem, device, playbackSession, feed, feedEpisode, setting, customMetadataProvider, mediaItemShare [2025-02-19 16:57:12.713] FATAL: [Server] Unhandled rejection: Error at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50 at new Promise (<anonymous>) at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12) at /node_modules/sequelize/lib/sequelize.js:315:28 at async SQLiteQueryInterface.select (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12) at async podcast.findAll (/node_modules/sequelize/lib/model.js:1140:21) at async Database.cleanDatabase (/server/Database.js:660:39) at async Database.loadData (/server/Database.js:383:5) at async Database.init (/server/Database.js:193:5) { name: 'SequelizeDatabaseError', parent: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] { errno: 1, code: 'SQLITE_ERROR', sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;" }, original: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] { errno: 1, code: 'SQLITE_ERROR', sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;" }, sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;", parameters: {} } promise: Promise { <rejected> Error at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50 at new Promise (<anonymous>) at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12) at /node_modules/sequelize/lib/sequelize.js:315:28 at async SQLiteQueryInterface.select (/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12) at async podcast.findAll (/node_modules/sequelize/lib/model.js:1140:21) at async Database.cleanDatabase (/server/Database.js:660:39) at async Database.loadData (/server/Database.js:383:5) at async Database.init (/server/Database.js:193:5) { name: 'SequelizeDatabaseError', parent: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] { errno: 1, code: 'SQLITE_ERROR', sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;" }, original: [Error: SQLITE_ERROR: no such column: podcast.numEpisodes] { errno: 1, code: 'SQLITE_ERROR', sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;" }, sql: "SELECT `podcast`.`id`, `podcast`.`title`, `podcast`.`titleIgnorePrefix`, `podcast`.`author`, `podcast`.`releaseDate`, `podcast`.`feedURL`, `podcast`.`imageURL`, `podcast`.`description`, `podcast`.`itunesPageURL`, `podcast`.`itunesId`, `podcast`.`itunesArtistId`, `podcast`.`language`, `podcast`.`podcastType`, `podcast`.`explicit`, `podcast`.`autoDownloadEpisodes`, `podcast`.`autoDownloadSchedule`, `podcast`.`lastEpisodeCheck`, `podcast`.`maxEpisodesToKeep`, `podcast`.`maxNewEpisodesToDownload`, `podcast`.`coverPath`, `podcast`.`tags`, `podcast`.`genres`, `podcast`.`numEpisodes`, `podcast`.`createdAt`, `podcast`.`updatedAt`, `libraryItem`.`id` AS `libraryItem.id`, `libraryItem`.`ino` AS `libraryItem.ino`, `libraryItem`.`path` AS `libraryItem.path`, `libraryItem`.`relPath` AS `libraryItem.relPath`, `libraryItem`.`mediaId` AS `libraryItem.mediaId`, `libraryItem`.`mediaType` AS `libraryItem.mediaType`, `libraryItem`.`isFile` AS `libraryItem.isFile`, `libraryItem`.`isMissing` AS `libraryItem.isMissing`, `libraryItem`.`isInvalid` AS `libraryItem.isInvalid`, `libraryItem`.`mtime` AS `libraryItem.mtime`, `libraryItem`.`ctime` AS `libraryItem.ctime`, `libraryItem`.`birthtime` AS `libraryItem.birthtime`, `libraryItem`.`size` AS `libraryItem.size`, `libraryItem`.`lastScan` AS `libraryItem.lastScan`, `libraryItem`.`lastScanVersion` AS `libraryItem.lastScanVersion`, `libraryItem`.`libraryFiles` AS `libraryItem.libraryFiles`, `libraryItem`.`extraData` AS `libraryItem.extraData`, `libraryItem`.`title` AS `libraryItem.title`, `libraryItem`.`titleIgnorePrefix` AS `libraryItem.titleIgnorePrefix`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `podcasts` AS `podcast` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `podcast`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'podcast' WHERE `libraryItem`.`id` IS NULL;", parameters: {} } } ``` ### Additional Notes OS: Synology DSM 7.2.2
adam added the bug label 2026-04-25 00:08:44 +02:00
adam closed this issue 2026-04-25 00:08:44 +02:00
Author
Owner

@nichwall commented on GitHub (Feb 19, 2025):

Duplicate of https://github.com/advplyr/audiobookshelf/issues/4002. Looks like you are running the edge container, which is different than latest. Latest is the most recent release, (2.19.3 at the time of writing), but edge is the most recent commit to GitHub.

@nichwall commented on GitHub (Feb 19, 2025): Duplicate of https://github.com/advplyr/audiobookshelf/issues/4002. Looks like you are running the `edge` container, which is different than `latest`. `Latest` is the most recent release, (2.19.3 at the time of writing), but `edge` is the most recent commit to GitHub.
Author
Owner

@ralob commented on GitHub (Feb 19, 2025):

Ah, that makes perfect sense. I should have checked the closed issues section before raising the issue. I reverted back to latest and it seems all is well. Thank you for the info and assistance.

@ralob commented on GitHub (Feb 19, 2025): Ah, that makes perfect sense. I should have checked the closed issues section before raising the issue. I reverted back to latest and it seems all is well. Thank you for the info and assistance.
Author
Owner

@MichaelRPowell commented on GitHub (Feb 19, 2025):

I came here to report the same issue as @ralob , and also found out I am running the edge release. Thanks for the quick response @nichwall !

@MichaelRPowell commented on GitHub (Feb 19, 2025): I came here to report the same issue as @ralob , and also found out I am running the edge release. Thanks for the quick response @nichwall !
Author
Owner

@nichwall commented on GitHub (Feb 20, 2025):

2.19.4 has been released, which will run the migration when you upgrade so you can upgrade to get the faster podcast pages now.

@nichwall commented on GitHub (Feb 20, 2025): 2.19.4 has been released, which will run the migration when you upgrade so you can upgrade to get the faster podcast pages now.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#2591