[Bug]: SQLITE_CORRUPT error on upgrade from 2.16.2 to any 2.17.x version #958

Closed
opened 2025-10-14 18:11:46 -06:00 by navan · 0 comments
Owner

Originally created by @biuklija on 11/24/2024

What happened?

On upgrade to from 2.16.2, any newer version, the image crashes and reports corrupt database. Reverting back to 1.16.2 the same database works fine.
Migration failed: MigrationError: Migration v2.17.0-uuid-replacement.js (up) failed: Original error: SQLITE_CORRUPT: database disk image is malformed

What did you expect to happen?

Image should perform the database upgrade and start.

Steps to reproduce the issue

  1. Stop image
  2. Pull the latest image or 2.17.0, 2.17.1, 2.17.2
  3. Run image

Audiobookshelf version

2.17.2

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  | [2024-11-24 13:08:10.495] INFO: === Starting Server ===
audiobookshelf-1  | [2024-11-24 13:08:10.505] INFO: [Server] Init v2.17.0
audiobookshelf-1  | [2024-11-24 13:08:10.507] INFO: [Server] Node.js Version: v20.18.0
audiobookshelf-1  | [2024-11-24 13:08:10.508] INFO: [Server] Platform: linux
audiobookshelf-1  | [2024-11-24 13:08:10.511] INFO: [Server] Arch: arm64
audiobookshelf-1  | [2024-11-24 13:08:10.535] INFO: [Database] Initializing db at "/config/absdatabase.sqlite"
audiobookshelf-1  | [2024-11-24 13:08:10.685] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so
audiobookshelf-1  | [2024-11-24 13:08:10.689] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so
audiobookshelf-1  | [2024-11-24 13:08:10.691] INFO: [Database] Db supports unaccent and unicode foldings
audiobookshelf-1  | [2024-11-24 13:08:10.694] INFO: [Database] Db connection was successful
audiobookshelf-1  | [2024-11-24 13:08:10.804] INFO: [MigrationManager] Migrating database up to version 2.17.0
audiobookshelf-1  | [2024-11-24 13:08:10.806] INFO: [MigrationManager] Migrations to run: v2.17.0-uuid-replacement.js
audiobookshelf-1  | [2024-11-24 13:08:12.675] INFO: Created a backup of the original database.
audiobookshelf-1  | [2024-11-24 13:08:12.685] INFO: { event: 'migrating', name: 'v2.17.0-uuid-replacement.js' }
audiobookshelf-1  | [2024-11-24 13:08:12.694] INFO: [2.17.0 migration] UPGRADE BEGIN: 2.17.0-uuid-replacement
audiobookshelf-1  | [2024-11-24 13:08:12.695] INFO: [2.17.0 migration] Changing libraryItems.mediaId column to UUID
audiobookshelf-1  | [2024-11-24 13:08:12.744] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.17.0-uuid-replacement.js (up) failed: Original error: SQLITE_CORRUPT: database disk image is malformed
audiobookshelf-1  |     at /server/libs/umzug/umzug.js:150:17
audiobookshelf-1  |     at async Umzug.runCommand (/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |     at async MigrationManager.runMigrations (/server/managers/MigrationManager.js:102:9)
audiobookshelf-1  |     at async Database.init (/server/Database.js:184:7)
audiobookshelf-1  |     at async Server.init (/server/Server.js:127:5)
audiobookshelf-1  |     at async Server.start (/server/Server.js:193:5) {
audiobookshelf-1  |   migration: {
audiobookshelf-1  |     direction: 'up',
audiobookshelf-1  |     name: 'v2.17.0-uuid-replacement.js',
audiobookshelf-1  |     path: '/config/migrations/v2.17.0-uuid-replacement.js',
audiobookshelf-1  |     context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] }
audiobookshelf-1  |   },
audiobookshelf-1  |   [cause]: Error
audiobookshelf-1  |       at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27)
audiobookshelf-1  |       at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50
audiobookshelf-1  |       at new Promise (<anonymous>)
audiobookshelf-1  |       at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12)
audiobookshelf-1  |       at /node_modules/sequelize/lib/sequelize.js:315:28
audiobookshelf-1  |       at async SQLiteQueryInterface.changeColumn (/node_modules/sequelize/lib/dialects/sqlite/query-interface.js:43:7)
audiobookshelf-1  |       at async Object.up (/server/migrations/v2.17.0-uuid-replacement.js:21:3)
audiobookshelf-1  |       at async /server/libs/umzug/umzug.js:148:11
audiobookshelf-1  |       at async Umzug.runCommand (/server/libs/umzug/umzug.js:112:12)
audiobookshelf-1  |       at async MigrationManager.runMigrations (/server/managers/MigrationManager.js:102:9) {
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: 'INSERT INTO `libraryItems_backup` SELECT `id`, `ino`, `path`, `relPath`, `mediaId`, `mediaType`, `isFile`, `isMissing`, `isInvalid`, `mtime`, `ctime`, `birthtime`, `size`, `lastScan`, `lastScanVersion`, `libraryFiles`, `extraData`, `createdAt`, `updatedAt`, `libraryId`, `libraryFolderId` FROM `libraryItems`;'
audiobookshelf-1  |     },
audiobookshelf-1  |     original: [Error: SQLITE_CORRUPT: database disk image is malformed] {
audiobookshelf-1  |       errno: 11,
audiobookshelf-1  |       code: 'SQLITE_CORRUPT',
audiobookshelf-1  |       sql: 'INSERT INTO `libraryItems_backup` SELECT `id`, `ino`, `path`, `relPath`, `mediaId`, `mediaType`, `isFile`, `isMissing`, `isInvalid`, `mtime`, `ctime`, `birthtime`, `size`, `lastScan`, `lastScanVersion`, `libraryFiles`, `extraData`, `createdAt`, `updatedAt`, `libraryId`, `libraryFolderId` FROM `libraryItems`;'
audiobookshelf-1  |     },
audiobookshelf-1  |     sql: 'INSERT INTO `libraryItems_backup` SELECT `id`, `ino`, `path`, `relPath`, `mediaId`, `mediaType`, `isFile`, `isMissing`, `isInvalid`, `mtime`, `ctime`, `birthtime`, `size`, `lastScan`, `lastScanVersion`, `libraryFiles`, `extraData`, `createdAt`, `updatedAt`, `libraryId`, `libraryFolderId` FROM `libraryItems`;',
audiobookshelf-1  |     parameters: {}
audiobookshelf-1  |   }
audiobookshelf-1  | }
audiobookshelf-1  | [2024-11-24 13:08:12.767] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite.
audiobookshelf-1  | [2024-11-24 13:08:12.771] INFO: [MigrationManager] Restored the original database from the backup.
audiobookshelf-1  | [2024-11-24 13:08:12.773] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1.

Additional Notes

I have tried running all version post 2.16.2, the crash occurs on all of them.

*Originally created by @biuklija on 11/24/2024* ### What happened? On upgrade to from 2.16.2, any newer version, the image crashes and reports corrupt database. Reverting back to 1.16.2 the same database works fine. `Migration failed: MigrationError: Migration v2.17.0-uuid-replacement.js (up) failed: Original error: SQLITE_CORRUPT: database disk image is malformed` ### What did you expect to happen? Image should perform the database upgrade and start. ### Steps to reproduce the issue 1. Stop image 2. Pull the latest image or 2.17.0, 2.17.1, 2.17.2 3. Run image ### Audiobookshelf version 2.17.2 ### 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 | [2024-11-24 13:08:10.495] INFO: === Starting Server === audiobookshelf-1 | [2024-11-24 13:08:10.505] INFO: [Server] Init v2.17.0 audiobookshelf-1 | [2024-11-24 13:08:10.507] INFO: [Server] Node.js Version: v20.18.0 audiobookshelf-1 | [2024-11-24 13:08:10.508] INFO: [Server] Platform: linux audiobookshelf-1 | [2024-11-24 13:08:10.511] INFO: [Server] Arch: arm64 audiobookshelf-1 | [2024-11-24 13:08:10.535] INFO: [Database] Initializing db at "/config/absdatabase.sqlite" audiobookshelf-1 | [2024-11-24 13:08:10.685] INFO: [Database] Loading extension /usr/local/lib/nusqlite3/libnusqlite3.so audiobookshelf-1 | [2024-11-24 13:08:10.689] INFO: [Database] Successfully loaded extension /usr/local/lib/nusqlite3/libnusqlite3.so audiobookshelf-1 | [2024-11-24 13:08:10.691] INFO: [Database] Db supports unaccent and unicode foldings audiobookshelf-1 | [2024-11-24 13:08:10.694] INFO: [Database] Db connection was successful audiobookshelf-1 | [2024-11-24 13:08:10.804] INFO: [MigrationManager] Migrating database up to version 2.17.0 audiobookshelf-1 | [2024-11-24 13:08:10.806] INFO: [MigrationManager] Migrations to run: v2.17.0-uuid-replacement.js audiobookshelf-1 | [2024-11-24 13:08:12.675] INFO: Created a backup of the original database. audiobookshelf-1 | [2024-11-24 13:08:12.685] INFO: { event: 'migrating', name: 'v2.17.0-uuid-replacement.js' } audiobookshelf-1 | [2024-11-24 13:08:12.694] INFO: [2.17.0 migration] UPGRADE BEGIN: 2.17.0-uuid-replacement audiobookshelf-1 | [2024-11-24 13:08:12.695] INFO: [2.17.0 migration] Changing libraryItems.mediaId column to UUID audiobookshelf-1 | [2024-11-24 13:08:12.744] ERROR: [MigrationManager] Migration failed: MigrationError: Migration v2.17.0-uuid-replacement.js (up) failed: Original error: SQLITE_CORRUPT: database disk image is malformed audiobookshelf-1 | at /server/libs/umzug/umzug.js:150:17 audiobookshelf-1 | at async Umzug.runCommand (/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | at async MigrationManager.runMigrations (/server/managers/MigrationManager.js:102:9) audiobookshelf-1 | at async Database.init (/server/Database.js:184:7) audiobookshelf-1 | at async Server.init (/server/Server.js:127:5) audiobookshelf-1 | at async Server.start (/server/Server.js:193:5) { audiobookshelf-1 | migration: { audiobookshelf-1 | direction: 'up', audiobookshelf-1 | name: 'v2.17.0-uuid-replacement.js', audiobookshelf-1 | path: '/config/migrations/v2.17.0-uuid-replacement.js', audiobookshelf-1 | context: { queryInterface: [SQLiteQueryInterface], logger: [Logger] } audiobookshelf-1 | }, audiobookshelf-1 | [cause]: Error audiobookshelf-1 | at Database.<anonymous> (/node_modules/sequelize/lib/dialects/sqlite/query.js:185:27) audiobookshelf-1 | at /node_modules/sequelize/lib/dialects/sqlite/query.js:183:50 audiobookshelf-1 | at new Promise (<anonymous>) audiobookshelf-1 | at Query.run (/node_modules/sequelize/lib/dialects/sqlite/query.js:183:12) audiobookshelf-1 | at /node_modules/sequelize/lib/sequelize.js:315:28 audiobookshelf-1 | at async SQLiteQueryInterface.changeColumn (/node_modules/sequelize/lib/dialects/sqlite/query-interface.js:43:7) audiobookshelf-1 | at async Object.up (/server/migrations/v2.17.0-uuid-replacement.js:21:3) audiobookshelf-1 | at async /server/libs/umzug/umzug.js:148:11 audiobookshelf-1 | at async Umzug.runCommand (/server/libs/umzug/umzug.js:112:12) audiobookshelf-1 | at async MigrationManager.runMigrations (/server/managers/MigrationManager.js:102:9) { 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: 'INSERT INTO `libraryItems_backup` SELECT `id`, `ino`, `path`, `relPath`, `mediaId`, `mediaType`, `isFile`, `isMissing`, `isInvalid`, `mtime`, `ctime`, `birthtime`, `size`, `lastScan`, `lastScanVersion`, `libraryFiles`, `extraData`, `createdAt`, `updatedAt`, `libraryId`, `libraryFolderId` FROM `libraryItems`;' audiobookshelf-1 | }, audiobookshelf-1 | original: [Error: SQLITE_CORRUPT: database disk image is malformed] { audiobookshelf-1 | errno: 11, audiobookshelf-1 | code: 'SQLITE_CORRUPT', audiobookshelf-1 | sql: 'INSERT INTO `libraryItems_backup` SELECT `id`, `ino`, `path`, `relPath`, `mediaId`, `mediaType`, `isFile`, `isMissing`, `isInvalid`, `mtime`, `ctime`, `birthtime`, `size`, `lastScan`, `lastScanVersion`, `libraryFiles`, `extraData`, `createdAt`, `updatedAt`, `libraryId`, `libraryFolderId` FROM `libraryItems`;' audiobookshelf-1 | }, audiobookshelf-1 | sql: 'INSERT INTO `libraryItems_backup` SELECT `id`, `ino`, `path`, `relPath`, `mediaId`, `mediaType`, `isFile`, `isMissing`, `isInvalid`, `mtime`, `ctime`, `birthtime`, `size`, `lastScan`, `lastScanVersion`, `libraryFiles`, `extraData`, `createdAt`, `updatedAt`, `libraryId`, `libraryFolderId` FROM `libraryItems`;', audiobookshelf-1 | parameters: {} audiobookshelf-1 | } audiobookshelf-1 | } audiobookshelf-1 | [2024-11-24 13:08:12.767] INFO: [MigrationManager] Saved the failed database as absdatabase.failed.sqlite. audiobookshelf-1 | [2024-11-24 13:08:12.771] INFO: [MigrationManager] Restored the original database from the backup. audiobookshelf-1 | [2024-11-24 13:08:12.773] INFO: [MigrationManager] Migration failed. Exiting Audiobookshelf with code 1. ``` ### Additional Notes I have tried running all version post 2.16.2, the crash occurs on all of them.
navan 2025-10-14 18:11:47 -06:00
Sign in to join this conversation.
No labels
authentication
awaiting release
awaiting release
awaiting release
awaiting release
backlog
backlog
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
chapter editor
chapter editor
chapter editor
chapter editor
chapter editor
ebooks
ebooks
ebooks
ebooks
ebooks
ebooks
ebooks
ebooks
ebooks
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
possible plugin
progress sync
sorting/filtering/searching
sorting/filtering/searching
sorting/filtering/searching
sorting/filtering/searching
sorting/filtering/searching
sorting/filtering/searching
sorting/filtering/searching
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
unable to reproduce
upload
users & permissions
users & permissions
users & permissions
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
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: github/audiobookshelf#958
No description provided.