[Bug]: Migration failed #3189

Open
opened 2026-02-20 11:01:17 -05:00 by deekerman · 13 comments
Owner

Originally created by @magick93 on GitHub (Jan 15, 2026).

What happened?

Hello

I restarted my docker compose instance, and now it is failing to start. The logs show this error:

audiobookshelf-1  | [2026-01-16 00:06:02.685] INFO: [Database] Db connection was successful
audiobookshelf-1  | [2026-01-16 00:06:02.715] INFO: [MigrationManager] Migrating database up to version 2.32.1
audiobookshelf-1  | [2026-01-16 00:06:02.716] INFO: [MigrationManager] Migrations to run: v2.26.0-create-auth-tables.js
audiobookshelf-1  | [2026-01-16 00:06:02.720] INFO: Created a backup of the original database.
audiobookshelf-1  | [2026-01-16 00:06:02.721] INFO: { event: 'migrating', name: 'v2.26.0-create-auth-tables.js' }
audiobookshelf-1  | [2026-01-16 00:06:02.723] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.26.0-create-auth-tables.js (up) failed: Original error: m.up is not a function
audiobookshelf-1  |     at /app/server/libs/umzug/umzug.js:150:17
audiobookshelf-1  |     at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |     ... 3 lines matching cause stack trace ...
audiobookshelf-1  |     at async Server.start (/app/server/Server.js:223:5) {
audiobookshelf-1  |   migration: {
audiobookshelf-1  |     direction: 'up',
audiobookshelf-1  |     name: 'v2.26.0-create-auth-tables.js',
audiobookshelf-1  |     path: '/config/migrations/v2.26.0-create-auth-tables.js',
audiobookshelf-1  |     context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] }
audiobookshelf-1  |   },
audiobookshelf-1  |   [cause]: TypeError: m.up is not a function
audiobookshelf-1  |       at /app/server/libs/umzug/umzug.js:148:19
audiobookshelf-1  |       at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |       at async MigrationManager.runMigrations (/app/server/managers/MigrationManager.js:107:9)
audiobookshelf-1  |       at async Database.init (/app/server/Database.js:194:7)
audiobookshelf-1  |       at async Server.init (/app/server/Server.js:159:5)
audiobookshelf-1  |       at async Server.start (/app/server/Server.js:223:5)
audiobookshelf-1  | }
audiobookshelf-1  | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite.
audiobookshelf-1  | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Restored the original database from the backup.
audiobookshelf-1  | [2026-01-16 00:06:02.727] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1.
audiobookshelf-1  | Running in production mode.

Any help is appreciated.

What did you expect to happen?

For the migration to complete succssfully

Steps to reproduce the issue

Unsure how to reproduce. I'm not sure what actual version I was running previously as I was using latest.

Audiobookshelf version

unsure - to latest

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Linux

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

None

Logs

audiobookshelf-1  | [2026-01-16 00:06:02.685] INFO: [Database] Db connection was successful
audiobookshelf-1  | [2026-01-16 00:06:02.715] INFO: [MigrationManager] Migrating database up to version 2.32.1
audiobookshelf-1  | [2026-01-16 00:06:02.716] INFO: [MigrationManager] Migrations to run: v2.26.0-create-auth-tables.js
audiobookshelf-1  | [2026-01-16 00:06:02.720] INFO: Created a backup of the original database.
audiobookshelf-1  | [2026-01-16 00:06:02.721] INFO: { event: 'migrating', name: 'v2.26.0-create-auth-tables.js' }
audiobookshelf-1  | [2026-01-16 00:06:02.723] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.26.0-create-auth-tables.js (up) failed: Original error: m.up is not a function
audiobookshelf-1  |     at /app/server/libs/umzug/umzug.js:150:17
audiobookshelf-1  |     at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |     ... 3 lines matching cause stack trace ...
audiobookshelf-1  |     at async Server.start (/app/server/Server.js:223:5) {
audiobookshelf-1  |   migration: {
audiobookshelf-1  |     direction: 'up',
audiobookshelf-1  |     name: 'v2.26.0-create-auth-tables.js',
audiobookshelf-1  |     path: '/config/migrations/v2.26.0-create-auth-tables.js',
audiobookshelf-1  |     context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] }
audiobookshelf-1  |   },
audiobookshelf-1  |   [cause]: TypeError: m.up is not a function
audiobookshelf-1  |       at /app/server/libs/umzug/umzug.js:148:19
audiobookshelf-1  |       at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |       at async MigrationManager.runMigrations (/app/server/managers/MigrationManager.js:107:9)
audiobookshelf-1  |       at async Database.init (/app/server/Database.js:194:7)
audiobookshelf-1  |       at async Server.init (/app/server/Server.js:159:5)
audiobookshelf-1  |       at async Server.start (/app/server/Server.js:223:5)
audiobookshelf-1  | }
audiobookshelf-1  | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite.
audiobookshelf-1  | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Restored the original database from the backup.
audiobookshelf-1  | [2026-01-16 00:06:02.727] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1.
audiobookshelf-1  | Running in production mode.

Additional Notes

No response

Originally created by @magick93 on GitHub (Jan 15, 2026). ### What happened? Hello I restarted my docker compose instance, and now it is failing to start. The logs show this error: ``` audiobookshelf-1 | [2026-01-16 00:06:02.685] INFO: [Database] Db connection was successful audiobookshelf-1 | [2026-01-16 00:06:02.715] INFO: [MigrationManager] Migrating database up to version 2.32.1 audiobookshelf-1 | [2026-01-16 00:06:02.716] INFO: [MigrationManager] Migrations to run: v2.26.0-create-auth-tables.js audiobookshelf-1 | [2026-01-16 00:06:02.720] INFO: Created a backup of the original database. audiobookshelf-1 | [2026-01-16 00:06:02.721] INFO: { event: 'migrating', name: 'v2.26.0-create-auth-tables.js' } audiobookshelf-1 | [2026-01-16 00:06:02.723] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.26.0-create-auth-tables.js (up) failed: Original error: m.up is not a function audiobookshelf-1 | at /app/server/libs/umzug/umzug.js:150:17 audiobookshelf-1 | at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | ... 3 lines matching cause stack trace ... audiobookshelf-1 | at async Server.start (/app/server/Server.js:223:5) { audiobookshelf-1 | migration: { audiobookshelf-1 | direction: 'up', audiobookshelf-1 | name: 'v2.26.0-create-auth-tables.js', audiobookshelf-1 | path: '/config/migrations/v2.26.0-create-auth-tables.js', audiobookshelf-1 | context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] } audiobookshelf-1 | }, audiobookshelf-1 | [cause]: TypeError: m.up is not a function audiobookshelf-1 | at /app/server/libs/umzug/umzug.js:148:19 audiobookshelf-1 | at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | at async MigrationManager.runMigrations (/app/server/managers/MigrationManager.js:107:9) audiobookshelf-1 | at async Database.init (/app/server/Database.js:194:7) audiobookshelf-1 | at async Server.init (/app/server/Server.js:159:5) audiobookshelf-1 | at async Server.start (/app/server/Server.js:223:5) audiobookshelf-1 | } audiobookshelf-1 | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite. audiobookshelf-1 | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Restored the original database from the backup. audiobookshelf-1 | [2026-01-16 00:06:02.727] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1. audiobookshelf-1 | Running in production mode. ``` Any help is appreciated. ### What did you expect to happen? For the migration to complete succssfully ### Steps to reproduce the issue Unsure how to reproduce. I'm not sure what actual version I was running previously as I was using `latest`. ### Audiobookshelf version unsure - to latest ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Linux ### If the issue is being seen in the UI, what browsers are you seeing the problem on? None ### Logs ```shell audiobookshelf-1 | [2026-01-16 00:06:02.685] INFO: [Database] Db connection was successful audiobookshelf-1 | [2026-01-16 00:06:02.715] INFO: [MigrationManager] Migrating database up to version 2.32.1 audiobookshelf-1 | [2026-01-16 00:06:02.716] INFO: [MigrationManager] Migrations to run: v2.26.0-create-auth-tables.js audiobookshelf-1 | [2026-01-16 00:06:02.720] INFO: Created a backup of the original database. audiobookshelf-1 | [2026-01-16 00:06:02.721] INFO: { event: 'migrating', name: 'v2.26.0-create-auth-tables.js' } audiobookshelf-1 | [2026-01-16 00:06:02.723] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.26.0-create-auth-tables.js (up) failed: Original error: m.up is not a function audiobookshelf-1 | at /app/server/libs/umzug/umzug.js:150:17 audiobookshelf-1 | at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | ... 3 lines matching cause stack trace ... audiobookshelf-1 | at async Server.start (/app/server/Server.js:223:5) { audiobookshelf-1 | migration: { audiobookshelf-1 | direction: 'up', audiobookshelf-1 | name: 'v2.26.0-create-auth-tables.js', audiobookshelf-1 | path: '/config/migrations/v2.26.0-create-auth-tables.js', audiobookshelf-1 | context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] } audiobookshelf-1 | }, audiobookshelf-1 | [cause]: TypeError: m.up is not a function audiobookshelf-1 | at /app/server/libs/umzug/umzug.js:148:19 audiobookshelf-1 | at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | at async MigrationManager.runMigrations (/app/server/managers/MigrationManager.js:107:9) audiobookshelf-1 | at async Database.init (/app/server/Database.js:194:7) audiobookshelf-1 | at async Server.init (/app/server/Server.js:159:5) audiobookshelf-1 | at async Server.start (/app/server/Server.js:223:5) audiobookshelf-1 | } audiobookshelf-1 | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite. audiobookshelf-1 | [2026-01-16 00:06:02.726] INFO: [MigrationManager] Restored the original database from the backup. audiobookshelf-1 | [2026-01-16 00:06:02.727] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1. audiobookshelf-1 | Running in production mode. ``` ### Additional Notes _No response_
Author
Owner

@Vito0912 commented on GitHub (Jan 15, 2026):

When was the last time you updated/created the stack?

@Vito0912 commented on GitHub (Jan 15, 2026): When was the last time you updated/created the stack?
Author
Owner

@magick93 commented on GitHub (Jan 15, 2026):

I believe it was 12 April 2025

@magick93 commented on GitHub (Jan 15, 2026): I believe it was 12 April 2025
Author
Owner

@nichwall commented on GitHub (Jan 15, 2026):

Do you have any logs from before today to see what version you were running?

@nichwall commented on GitHub (Jan 15, 2026): Do you have any logs from before today to see what version you were running?
Author
Owner

@magick93 commented on GitHub (Jan 15, 2026):

Unfortunately I dont have any logs that show the version prior to today.

@magick93 commented on GitHub (Jan 15, 2026): Unfortunately I dont have any logs that show the version prior to today.
Author
Owner

@sir-wilhelm commented on GitHub (Jan 15, 2026):

If you were on vLatest as of 2025-04-12 then you would have been running v2.20.0.

@sir-wilhelm commented on GitHub (Jan 15, 2026): If you were on vLatest as of 2025-04-12 then you would have been running [v2.20.0](https://github.com/advplyr/audiobookshelf/releases/tag/v2.20.0).
Author
Owner

@magick93 commented on GitHub (Jan 15, 2026):

Ok, I managed to locate the docker image diget. And I was running this image - https://github.com/advplyr/audiobookshelf/pkgs/container/audiobookshelf/438366074?tag=2.25.1

@magick93 commented on GitHub (Jan 15, 2026): Ok, I managed to locate the docker image diget. And I was running this image - https://github.com/advplyr/audiobookshelf/pkgs/container/audiobookshelf/438366074?tag=2.25.1
Author
Owner

@magick93 commented on GitHub (Jan 15, 2026):

Ok, I've tried with the docker image tagged 2.26.0 and now this is the logs:

audiobookshelf-1  | [2026-01-16 01:00:04.256] INFO: [MigrationManager] Migrating database up to version 2.26.0
audiobookshelf-1  | [2026-01-16 01:00:04.257] INFO: [MigrationManager] Migrations to run: v2.26.0-create-auth-tables.js
audiobookshelf-1  | [2026-01-16 01:00:04.261] INFO: Created a backup of the original database.
audiobookshelf-1  | [2026-01-16 01:00:04.262] INFO: { event: 'migrating', name: 'v2.26.0-create-auth-tables.js' }
audiobookshelf-1  | [2026-01-16 01:00:04.264] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.26.0-create-auth-tables.js (up) failed: Original error: m.up is not a function
audiobookshelf-1  |     at /app/server/libs/umzug/umzug.js:150:17
audiobookshelf-1  |     at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |     ... 3 lines matching cause stack trace ...
audiobookshelf-1  |     at async Server.start (/app/server/Server.js:222:5) {
audiobookshelf-1  |   migration: {
audiobookshelf-1  |     direction: 'up',
audiobookshelf-1  |     name: 'v2.26.0-create-auth-tables.js',
audiobookshelf-1  |     path: '/config/migrations/v2.26.0-create-auth-tables.js',
audiobookshelf-1  |     context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] }
audiobookshelf-1  |   },
audiobookshelf-1  |   [cause]: TypeError: m.up is not a function
audiobookshelf-1  |       at /app/server/libs/umzug/umzug.js:148:19
audiobookshelf-1  |       at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |       at async MigrationManager.runMigrations (/app/server/managers/MigrationManager.js:102:9)
audiobookshelf-1  |       at async Database.init (/app/server/Database.js:194:7)
audiobookshelf-1  |       at async Server.init (/app/server/Server.js:158:5)
audiobookshelf-1  |       at async Server.start (/app/server/Server.js:222:5)
audiobookshelf-1  | }
audiobookshelf-1  | [2026-01-16 01:00:04.267] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite.
audiobookshelf-1  | [2026-01-16 01:00:04.267] INFO: [MigrationManager] Restored the original database from the backup.
audiobookshelf-1  | [2026-01-16 01:00:04.268] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1.
@magick93 commented on GitHub (Jan 15, 2026): Ok, I've tried with the docker image tagged 2.26.0 and now this is the logs: ``` audiobookshelf-1 | [2026-01-16 01:00:04.256] INFO: [MigrationManager] Migrating database up to version 2.26.0 audiobookshelf-1 | [2026-01-16 01:00:04.257] INFO: [MigrationManager] Migrations to run: v2.26.0-create-auth-tables.js audiobookshelf-1 | [2026-01-16 01:00:04.261] INFO: Created a backup of the original database. audiobookshelf-1 | [2026-01-16 01:00:04.262] INFO: { event: 'migrating', name: 'v2.26.0-create-auth-tables.js' } audiobookshelf-1 | [2026-01-16 01:00:04.264] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.26.0-create-auth-tables.js (up) failed: Original error: m.up is not a function audiobookshelf-1 | at /app/server/libs/umzug/umzug.js:150:17 audiobookshelf-1 | at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | ... 3 lines matching cause stack trace ... audiobookshelf-1 | at async Server.start (/app/server/Server.js:222:5) { audiobookshelf-1 | migration: { audiobookshelf-1 | direction: 'up', audiobookshelf-1 | name: 'v2.26.0-create-auth-tables.js', audiobookshelf-1 | path: '/config/migrations/v2.26.0-create-auth-tables.js', audiobookshelf-1 | context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] } audiobookshelf-1 | }, audiobookshelf-1 | [cause]: TypeError: m.up is not a function audiobookshelf-1 | at /app/server/libs/umzug/umzug.js:148:19 audiobookshelf-1 | at async Umzug.runCommand (/app/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | at async MigrationManager.runMigrations (/app/server/managers/MigrationManager.js:102:9) audiobookshelf-1 | at async Database.init (/app/server/Database.js:194:7) audiobookshelf-1 | at async Server.init (/app/server/Server.js:158:5) audiobookshelf-1 | at async Server.start (/app/server/Server.js:222:5) audiobookshelf-1 | } audiobookshelf-1 | [2026-01-16 01:00:04.267] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite. audiobookshelf-1 | [2026-01-16 01:00:04.267] INFO: [MigrationManager] Restored the original database from the backup. audiobookshelf-1 | [2026-01-16 01:00:04.268] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1. ```
Author
Owner

@magick93 commented on GitHub (Jan 15, 2026):

I've gone back to the version prior to trying to update and now get this error:

audiobookshelf-1  | [2026-01-16 01:35:09.250] INFO: [Database] Db supports unaccent and unicode foldings
audiobookshelf-1  | [2026-01-16 01:35:09.250] INFO: [Database] Db connection was successful
audiobookshelf-1  | [2026-01-16 01:35:09.264] INFO: [MigrationManager] Database is already up to date.
audiobookshelf-1  | [2026-01-16 01:35:09.396] 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
audiobookshelf-1  | [2026-01-16 01:35:09.904] FATAL: [Server] Unhandled rejection: Error
audiobookshelf-1  |     at Database. (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
audiobookshelf-1  |     at /app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
audiobookshelf-1  |     at new Promise ()
audiobookshelf-1  |     at Query.run (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
audiobookshelf-1  |     at /app/node_modules/sequelize/lib/sequelize.js:315:28
audiobookshelf-1  |     at async SQLiteQueryInterface.select (/app/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)
audiobookshelf-1  |     at async book.findAll (/app/node_modules/sequelize/lib/model.js:1140:21)
audiobookshelf-1  |     at async Database.cleanDatabase (/app/server/Database.js:675:36)
audiobookshelf-1  |     at async Database.loadData (/app/server/Database.js:385:5)
audiobookshelf-1  |     at async Database.init (/app/server/Database.js:195:5) {
audiobookshelf-1  |   name: 'SequelizeDatabaseError',
audiobookshelf-1  |   parent: [Error: SQLITE_CORRUPT: database disk image is malformed] {
audiobookshelf-1  |     errno: 11,
audiobookshelf-1  |     code: 'SQLITE_CORRUPT',
audiobookshelf-1  |     sql: "SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`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`.`authorNamesFirstLast` AS `libraryItem.authorNamesFirstLast`, `libraryItem`.`authorNamesLastFirst` AS `libraryItem.authorNamesLastFirst`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `books` AS `book` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'book' WHERE `libraryItem`.`id` IS NULL;"
audiobookshelf-1  |   },

Is it possible to recreate the db file?

@magick93 commented on GitHub (Jan 15, 2026): I've gone back to the version prior to trying to update and now get this error: ``` audiobookshelf-1 | [2026-01-16 01:35:09.250] INFO: [Database] Db supports unaccent and unicode foldings audiobookshelf-1 | [2026-01-16 01:35:09.250] INFO: [Database] Db connection was successful audiobookshelf-1 | [2026-01-16 01:35:09.264] INFO: [MigrationManager] Database is already up to date. audiobookshelf-1 | [2026-01-16 01:35:09.396] 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 audiobookshelf-1 | [2026-01-16 01:35:09.904] FATAL: [Server] Unhandled rejection: Error audiobookshelf-1 | at Database. (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) audiobookshelf-1 | at /app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50 audiobookshelf-1 | at new Promise () audiobookshelf-1 | at Query.run (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12) audiobookshelf-1 | at /app/node_modules/sequelize/lib/sequelize.js:315:28 audiobookshelf-1 | at async SQLiteQueryInterface.select (/app/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12) audiobookshelf-1 | at async book.findAll (/app/node_modules/sequelize/lib/model.js:1140:21) audiobookshelf-1 | at async Database.cleanDatabase (/app/server/Database.js:675:36) audiobookshelf-1 | at async Database.loadData (/app/server/Database.js:385:5) audiobookshelf-1 | at async Database.init (/app/server/Database.js:195:5) { audiobookshelf-1 | name: 'SequelizeDatabaseError', audiobookshelf-1 | parent: [Error: SQLITE_CORRUPT: database disk image is malformed] { audiobookshelf-1 | errno: 11, audiobookshelf-1 | code: 'SQLITE_CORRUPT', audiobookshelf-1 | sql: "SELECT `book`.`id`, `book`.`title`, `book`.`titleIgnorePrefix`, `book`.`subtitle`, `book`.`publishedYear`, `book`.`publishedDate`, `book`.`publisher`, `book`.`description`, `book`.`isbn`, `book`.`asin`, `book`.`language`, `book`.`explicit`, `book`.`abridged`, `book`.`coverPath`, `book`.`duration`, `book`.`narrators`, `book`.`audioFiles`, `book`.`ebookFile`, `book`.`chapters`, `book`.`tags`, `book`.`genres`, `book`.`createdAt`, `book`.`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`.`authorNamesFirstLast` AS `libraryItem.authorNamesFirstLast`, `libraryItem`.`authorNamesLastFirst` AS `libraryItem.authorNamesLastFirst`, `libraryItem`.`createdAt` AS `libraryItem.createdAt`, `libraryItem`.`updatedAt` AS `libraryItem.updatedAt`, `libraryItem`.`libraryId` AS `libraryItem.libraryId`, `libraryItem`.`libraryFolderId` AS `libraryItem.libraryFolderId` FROM `books` AS `book` LEFT OUTER JOIN `libraryItems` AS `libraryItem` ON `book`.`id` = `libraryItem`.`mediaId` AND `libraryItem`.`mediaType` = 'book' WHERE `libraryItem`.`id` IS NULL;" audiobookshelf-1 | }, ``` Is it possible to recreate the db file?
Author
Owner

@advplyr commented on GitHub (Jan 17, 2026):

Hopefully you have backups.
Try opening the db in something like sqlitestudio.
There are 2 tables that are relevant to migrations.

  1. SequelizeMeta - this stores the migrations that have already been run to make sure they aren't run again. You should see records up to v2.20.0 and not including v2.26.0.
  2. migrationsMeta - This stores the current version and the maxVersion. If the current version is greater than the max version than a migration is run.

When a migration is run the first step is to copy the migration file into /config/migrations folder. Check that the v2.26.0 migration file is being copied into that folder. From the error it doesn't seem to be.

@advplyr commented on GitHub (Jan 17, 2026): Hopefully you have backups. Try opening the db in something like sqlitestudio. There are 2 tables that are relevant to migrations. 1. `SequelizeMeta` - this stores the migrations that have already been run to make sure they aren't run again. You should see records up to v2.20.0 and not including v2.26.0. 2. `migrationsMeta` - This stores the current version and the maxVersion. If the current version is greater than the max version than a migration is run. When a migration is run the first step is to copy the migration file into `/config/migrations` folder. Check that the v2.26.0 migration file is being copied into that folder. From the error it doesn't seem to be.
Author
Owner

@DrLeh commented on GitHub (Jan 17, 2026):

EDIT: moving configs to local folder solved my issue but is not ideal

i'm having a similar issue, but i'm starting from scratch cause i lost my metadata / config folders somehow at some point. With empty folders, i get this on startup of latest. notably- i am using a NAS to store my metadata/config folders. wonder if thats related.

| promise: Promise {
audiobookshelf  |    Error: Database migration failed
audiobookshelf  |       at Database.init (/app/server/Database.js:197:13)
audiobookshelf  |       at async Server.init (/app/server/Server.js:159:5)
audiobookshelf  |       at async Server.start (/app/server/Server.js:223:5)
audiobookshelf  | }
audiobookshelf  | Running in production mode.
audiobookshelf  | Options: CONFIG_PATH=/config, METADATA_PATH=/metadata, PORT=80, HOST=undefined, SOURCE=docker, ROUTER_BASE_PATH=/audiobookshelf
audiobookshelf  | [2026-01-17 15:23:57.794] INFO: === Starting Server ===
audiobookshelf  | [2026-01-17 15:23:57.797] INFO: [Server] Init v2.32.1
audiobookshelf  | [2026-01-17 15:23:57.797] INFO: [Server] Node.js Version: v20.19.6
audiobookshelf  | [2026-01-17 15:23:57.797] INFO: [Server] Platform: linux
audiobookshelf  | [2026-01-17 15:23:57.798] INFO: [Server] Arch: x64
audiobookshelf  | [2026-01-17 15:23:57.806] INFO: [Database] Initializing db at "/config/absdatabase.sqlite"
audiobookshelf  | [2026-01-17 15:23:57.850] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so
audiobookshelf  | [2026-01-17 15:23:57.851] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so
audiobookshelf  | [2026-01-17 15:23:57.851] INFO: [Database] Db supports unaccent and unicode foldings
audiobookshelf  | [2026-01-17 15:23:57.851] INFO: [Database] Db connection was successful
audiobookshelf  | [2026-01-17 15:24:03.384] ERROR: [Database] Failed to run migrations Error
audiobookshelf  |     at Database. (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
audiobookshelf  |     at /app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
audiobookshelf  |     at new Promise ()
audiobookshelf  |     at Query.run (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
audiobookshelf  |     at /app/node_modules/sequelize/lib/sequelize.js:315:28
audiobookshelf  |     at async SQLiteQueryInterface.createTable (/app/node_modules/sequelize/lib/dialects/abstract/query-interface.js:98:12)
audiobookshelf  |     at async MigrationManager.checkOrCreateMigrationsMetaTable (/app/server/managers/MigrationManager.js:234:7)
audiobookshelf  |     at async MigrationManager.fetchVersionsFromDatabase (/app/server/managers/MigrationManager.js:194:5)
audiobookshelf  |     at async MigrationManager.init (/app/server/managers/MigrationManager.js:51:5)
audiobookshelf  |     at async Database.init (/app/server/Database.js:193:7) {
audiobookshelf  |   name: 'SequelizeTimeoutError',
audiobookshelf  |   parent: [Error: SQLITE_BUSY: database is locked] {
audiobookshelf  |     errno: 5,
audiobookshelf  |     code: 'SQLITE_BUSY',
audiobookshelf  |     sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);'
audiobookshelf  |   },
audiobookshelf  |   original: [Error: SQLITE_BUSY: database is locked] {
audiobookshelf  |     errno: 5,
audiobookshelf  |     code: 'SQLITE_BUSY',
audiobookshelf  |     sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);'
audiobookshelf  |   },
audiobookshelf  |   sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);',
audiobookshelf  |   parameters: {}
audiobookshelf  | }
audiobookshelf  | [2026-01-17 15:24:03.389] FATAL: [Server] Unhandled rejection: Error: Database migration failed
audiobookshelf  |     at Database.init (/app/server/Database.js:197:13)
audiobookshelf  |     at async Server.init (/app/server/Server.js:159:5)
audiobookshelf  |     at async Server.start (/app/server/Server.js:223:5) 
audiobookshelf  | promise: Promise {
audiobookshelf  |    Error: Database migration failed
audiobookshelf  |       at Database.init (/app/server/Database.js:197:13)
audiobookshelf  |       at async Server.init (/app/server/Server.js:159:5)
audiobookshelf  |       at async Server.start (/app/server/Server.js:223:5)
audiobookshelf  | }
audiobookshelf  | Running in production mode.
audiobookshelf  | Options: CONFIG_PATH=/config, METADATA_PATH=/metadata, PORT=80, HOST=undefined, SOURCE=docker, ROUTER_BASE_PATH=/audiobookshelf
audiobookshelf  | [2026-01-17 15:25:04.760] INFO: === Starting Server ===
audiobookshelf  | [2026-01-17 15:25:04.762] INFO: [Server] Init v2.32.1
audiobookshelf  | [2026-01-17 15:25:04.763] INFO: [Server] Node.js Version: v20.19.6
audiobookshelf  | [2026-01-17 15:25:04.763] INFO: [Server] Platform: linux
audiobookshelf  | [2026-01-17 15:25:04.763] INFO: [Server] Arch: x64
audiobookshelf  | [2026-01-17 15:25:04.773] INFO: [Database] Initializing db at "/config/absdatabase.sqlite"
audiobookshelf  | [2026-01-17 15:25:04.816] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so
audiobookshelf  | [2026-01-17 15:25:04.817] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so
audiobookshelf  | [2026-01-17 15:25:04.818] INFO: [Database] Db supports unaccent and unicode foldings
audiobookshelf  | [2026-01-17 15:25:04.818] INFO: [Database] Db connection was successful
audiobookshelf  | [2026-01-17 15:25:10.355] ERROR: [Database] Failed to run migrations Error
audiobookshelf  |     at Database. (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
audiobookshelf  |     at /app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
audiobookshelf  |     at new Promise ()
audiobookshelf  |     at Query.run (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
audiobookshelf  |     at /app/node_modules/sequelize/lib/sequelize.js:315:28
audiobookshelf  |     at async SQLiteQueryInterface.createTable (/app/node_modules/sequelize/lib/dialects/abstract/query-interface.js:98:12)
audiobookshelf  |     at async MigrationManager.checkOrCreateMigrationsMetaTable (/app/server/managers/MigrationManager.js:234:7)
audiobookshelf  |     at async MigrationManager.fetchVersionsFromDatabase (/app/server/managers/MigrationManager.js:194:5)
audiobookshelf  |     at async MigrationManager.init (/app/server/managers/MigrationManager.js:51:5)
audiobookshelf  |     at async Database.init (/app/server/Database.js:193:7) {
audiobookshelf  |   name: 'SequelizeTimeoutError',
audiobookshelf  |   parent: [Error: SQLITE_BUSY: database is locked] {
audiobookshelf  |     errno: 5,
audiobookshelf  |     code: 'SQLITE_BUSY',
audiobookshelf  |     sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);'
audiobookshelf  |   },
audiobookshelf  |   original: [Error: SQLITE_BUSY: database is locked] {
audiobookshelf  |     errno: 5,
audiobookshelf  |     code: 'SQLITE_BUSY',
audiobookshelf  |     sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);'
audiobookshelf  |   },
audiobookshelf  |   sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);',
audiobookshelf  |   parameters: {}
audiobookshelf  | }
audiobookshelf  | [2026-01-17 15:25:10.360] FATAL: [Server] Unhandled rejection: Error: Database migration failed
audiobookshelf  |     at Database.init (/app/server/Database.js:197:13)
audiobookshelf  |     at async Server.init (/app/server/Server.js:159:5)
audiobookshelf  |     at async Server.start (/app/server/Server.js:223:5) 
audiobookshelf  | promise: Promise {
audiobookshelf  |    Error: Database migration failed
audiobookshelf  |       at Database.init (/app/server/Database.js:197:13)
audiobookshelf  |       at async Server.init (/app/server/Server.js:159:5)
audiobookshelf  |       at async Server.start (/app/server/Server.js:223:5)
audiobookshelf  | }
@DrLeh commented on GitHub (Jan 17, 2026): EDIT: moving configs to local folder solved my issue but is not ideal i'm having a similar issue, but i'm starting from scratch cause i lost my metadata / config folders somehow at some point. With empty folders, i get this on startup of latest. notably- i am using a NAS to store my metadata/config folders. wonder if thats related. ``` | promise: Promise { audiobookshelf | Error: Database migration failed audiobookshelf | at Database.init (/app/server/Database.js:197:13) audiobookshelf | at async Server.init (/app/server/Server.js:159:5) audiobookshelf | at async Server.start (/app/server/Server.js:223:5) audiobookshelf | } audiobookshelf | Running in production mode. audiobookshelf | Options: CONFIG_PATH=/config, METADATA_PATH=/metadata, PORT=80, HOST=undefined, SOURCE=docker, ROUTER_BASE_PATH=/audiobookshelf audiobookshelf | [2026-01-17 15:23:57.794] INFO: === Starting Server === audiobookshelf | [2026-01-17 15:23:57.797] INFO: [Server] Init v2.32.1 audiobookshelf | [2026-01-17 15:23:57.797] INFO: [Server] Node.js Version: v20.19.6 audiobookshelf | [2026-01-17 15:23:57.797] INFO: [Server] Platform: linux audiobookshelf | [2026-01-17 15:23:57.798] INFO: [Server] Arch: x64 audiobookshelf | [2026-01-17 15:23:57.806] INFO: [Database] Initializing db at "/config/absdatabase.sqlite" audiobookshelf | [2026-01-17 15:23:57.850] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so audiobookshelf | [2026-01-17 15:23:57.851] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so audiobookshelf | [2026-01-17 15:23:57.851] INFO: [Database] Db supports unaccent and unicode foldings audiobookshelf | [2026-01-17 15:23:57.851] INFO: [Database] Db connection was successful audiobookshelf | [2026-01-17 15:24:03.384] ERROR: [Database] Failed to run migrations Error audiobookshelf | at Database. (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) audiobookshelf | at /app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50 audiobookshelf | at new Promise () audiobookshelf | at Query.run (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12) audiobookshelf | at /app/node_modules/sequelize/lib/sequelize.js:315:28 audiobookshelf | at async SQLiteQueryInterface.createTable (/app/node_modules/sequelize/lib/dialects/abstract/query-interface.js:98:12) audiobookshelf | at async MigrationManager.checkOrCreateMigrationsMetaTable (/app/server/managers/MigrationManager.js:234:7) audiobookshelf | at async MigrationManager.fetchVersionsFromDatabase (/app/server/managers/MigrationManager.js:194:5) audiobookshelf | at async MigrationManager.init (/app/server/managers/MigrationManager.js:51:5) audiobookshelf | at async Database.init (/app/server/Database.js:193:7) { audiobookshelf | name: 'SequelizeTimeoutError', audiobookshelf | parent: [Error: SQLITE_BUSY: database is locked] { audiobookshelf | errno: 5, audiobookshelf | code: 'SQLITE_BUSY', audiobookshelf | sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);' audiobookshelf | }, audiobookshelf | original: [Error: SQLITE_BUSY: database is locked] { audiobookshelf | errno: 5, audiobookshelf | code: 'SQLITE_BUSY', audiobookshelf | sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);' audiobookshelf | }, audiobookshelf | sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);', audiobookshelf | parameters: {} audiobookshelf | } audiobookshelf | [2026-01-17 15:24:03.389] FATAL: [Server] Unhandled rejection: Error: Database migration failed audiobookshelf | at Database.init (/app/server/Database.js:197:13) audiobookshelf | at async Server.init (/app/server/Server.js:159:5) audiobookshelf | at async Server.start (/app/server/Server.js:223:5) audiobookshelf | promise: Promise { audiobookshelf | Error: Database migration failed audiobookshelf | at Database.init (/app/server/Database.js:197:13) audiobookshelf | at async Server.init (/app/server/Server.js:159:5) audiobookshelf | at async Server.start (/app/server/Server.js:223:5) audiobookshelf | } audiobookshelf | Running in production mode. audiobookshelf | Options: CONFIG_PATH=/config, METADATA_PATH=/metadata, PORT=80, HOST=undefined, SOURCE=docker, ROUTER_BASE_PATH=/audiobookshelf audiobookshelf | [2026-01-17 15:25:04.760] INFO: === Starting Server === audiobookshelf | [2026-01-17 15:25:04.762] INFO: [Server] Init v2.32.1 audiobookshelf | [2026-01-17 15:25:04.763] INFO: [Server] Node.js Version: v20.19.6 audiobookshelf | [2026-01-17 15:25:04.763] INFO: [Server] Platform: linux audiobookshelf | [2026-01-17 15:25:04.763] INFO: [Server] Arch: x64 audiobookshelf | [2026-01-17 15:25:04.773] INFO: [Database] Initializing db at "/config/absdatabase.sqlite" audiobookshelf | [2026-01-17 15:25:04.816] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so audiobookshelf | [2026-01-17 15:25:04.817] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so audiobookshelf | [2026-01-17 15:25:04.818] INFO: [Database] Db supports unaccent and unicode foldings audiobookshelf | [2026-01-17 15:25:04.818] INFO: [Database] Db connection was successful audiobookshelf | [2026-01-17 15:25:10.355] ERROR: [Database] Failed to run migrations Error audiobookshelf | at Database. (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) audiobookshelf | at /app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:50 audiobookshelf | at new Promise () audiobookshelf | at Query.run (/app/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12) audiobookshelf | at /app/node_modules/sequelize/lib/sequelize.js:315:28 audiobookshelf | at async SQLiteQueryInterface.createTable (/app/node_modules/sequelize/lib/dialects/abstract/query-interface.js:98:12) audiobookshelf | at async MigrationManager.checkOrCreateMigrationsMetaTable (/app/server/managers/MigrationManager.js:234:7) audiobookshelf | at async MigrationManager.fetchVersionsFromDatabase (/app/server/managers/MigrationManager.js:194:5) audiobookshelf | at async MigrationManager.init (/app/server/managers/MigrationManager.js:51:5) audiobookshelf | at async Database.init (/app/server/Database.js:193:7) { audiobookshelf | name: 'SequelizeTimeoutError', audiobookshelf | parent: [Error: SQLITE_BUSY: database is locked] { audiobookshelf | errno: 5, audiobookshelf | code: 'SQLITE_BUSY', audiobookshelf | sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);' audiobookshelf | }, audiobookshelf | original: [Error: SQLITE_BUSY: database is locked] { audiobookshelf | errno: 5, audiobookshelf | code: 'SQLITE_BUSY', audiobookshelf | sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);' audiobookshelf | }, audiobookshelf | sql: 'CREATE TABLE IF NOT EXISTS `migrationsMeta` (`key` VARCHAR(255) NOT NULL, `value` VARCHAR(255) NOT NULL);', audiobookshelf | parameters: {} audiobookshelf | } audiobookshelf | [2026-01-17 15:25:10.360] FATAL: [Server] Unhandled rejection: Error: Database migration failed audiobookshelf | at Database.init (/app/server/Database.js:197:13) audiobookshelf | at async Server.init (/app/server/Server.js:159:5) audiobookshelf | at async Server.start (/app/server/Server.js:223:5) audiobookshelf | promise: Promise { audiobookshelf | Error: Database migration failed audiobookshelf | at Database.init (/app/server/Database.js:197:13) audiobookshelf | at async Server.init (/app/server/Server.js:159:5) audiobookshelf | at async Server.start (/app/server/Server.js:223:5) audiobookshelf | } ```
Author
Owner

@advplyr commented on GitHub (Jan 17, 2026):

notably- i am using a NAS to store my metadata/config folders. wonder if thats related.

That is the issue then. The database cannot be stored on a NAS.

@advplyr commented on GitHub (Jan 17, 2026): > notably- i am using a NAS to store my metadata/config folders. wonder if thats related. That is the issue then. The database cannot be stored on a NAS.
Author
Owner

@nichwall commented on GitHub (Jan 17, 2026):

notably- i am using a NAS to store my metadata/config folders. wonder if thats related.

That is the issue then. The database cannot be stored on a NAS.

To clarify, you cannot store the database on a remote file system. If ABS is running on the same NAS and accessing it through the local filesystem then you can store the database on the NAS.

@nichwall commented on GitHub (Jan 17, 2026): > > notably- i am using a NAS to store my metadata/config folders. wonder if thats related. > > That is the issue then. The database cannot be stored on a NAS. To clarify, you cannot store the database on a remote file system. If ABS is running on the *same* NAS and accessing it through the local filesystem then you can store the database on the NAS.
Author
Owner

@magick93 commented on GitHub (Jan 18, 2026):

FYI, I am not using ABS on a NAS.

@magick93 commented on GitHub (Jan 18, 2026): FYI, I am not using ABS on a NAS.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/audiobookshelf-advplyr#3189
No description provided.