# CS0006 Error Fix - SQLite References Removal **Error:** CS0006 - Metadata file could not be found **Root Cause:** Code still references SQLite types after removing SQLite dependencies **Status:** ✅ Partially Fixed - Migration code needs special handling --- ## Errors Found and Fixed ### ✅ Fixed Issues 1. **Jellyfin.Server.Implementations\Extensions\ServiceCollectionExtensions.cs** - ❌ Line 16: `using Jellyfin.Database.Providers.Sqlite;` → **REMOVED** - ❌ Line 31: `yield return typeof(SqliteDatabaseProvider);` → **REMOVED** 2. **Emby.Server.Implementations\Data\SqliteExtensions.cs** - ❌ Entire file → **DELETED** (not used anywhere) --- ## ⚠️ Remaining Issues - Migration Routines These files in `Jellyfin.Server\Migrations\Routines\` still reference SQLite: 1. `MigrateActivityLogDb.cs` 2. `MigrateAuthenticationDb.cs` 3. `MigrateDisplayPreferencesDb.cs` 4. `MigrateLibraryDb.cs` 5. `MigrateLibraryDbCompatibilityCheck.cs` 6. `MigrateLibraryUserData.cs` 7. `MigrateUserDb.cs` 8. `RemoveDuplicateExtras.cs` 9. `ReseedFolderFlag.cs` **Why they exist:** These are migration routines to migrate FROM SQLite TO PostgreSQL --- ## Decision: What to Do About Migrations? ### Option 1: Keep SQLite Package for Migrations Only ✅ RECOMMENDED **Pros:** - Users can still migrate from SQLite - No breaking changes - SQLite DLLs only used during migration **Implementation:** 1. Add `Microsoft.Data.Sqlite` back to `Jellyfin.Server.csproj` ONLY 2. Migrations can run when needed 3. SQLite provider project still removed (no SQLite for runtime database) **Result:** SQLite DLLs in deployment, but ONLY for migration support --- ### Option 2: Remove Migration Code Entirely ❌ NOT RECOMMENDED **Pros:** - No SQLite dependencies at all - Smaller deployment **Cons:** - Users CANNOT migrate from SQLite - Breaking change for existing users - Requires manual migration --- ### Option 3: Make Migrations Optional Plugin **Pros:** - Clean deployment (no SQLite) - Migration still possible via plugin **Cons:** - Complex to implement - Extra step for users --- ## ✅ RECOMMENDED SOLUTION **Add SQLite package ONLY to Jellyfin.Server for migration support** This allows: - Migration FROM SQLite TO PostgreSQL - No SQLite as runtime database - Minimal impact on deployment size (~5MB) --- ## Implementation Steps ### Step 1: Add Microsoft.Data.Sqlite to Jellyfin.Server ```xml ``` ### Step 2: Rebuild ```powershell dotnet clean dotnet build --configuration Release ``` ### Step 3: Verify - ✅ Build succeeds - ✅ SQLite DLLs present for migrations - ✅ SQLite NOT used as runtime database - ✅ Only PostgreSQL provider in service collection --- ## Alternative: Remove Migrations If you want ZERO SQLite dependencies: ### Step 1: Delete Migration Files ```powershell Remove-Item "Jellyfin.Server\Migrations\Routines\*" -Recurse ``` ### Step 2: Document Migration Process Create `docs/SQLITE_TO_POSTGRES_MANUAL_MIGRATION.md` with manual steps ### Step 3: Update README ```markdown **Note:** This build does NOT support migrating from SQLite. Use the official Jellyfin tools to migrate first, then switch to this version. ``` --- ## Size Impact ### With Migration Support (Recommended) ``` SQLite DLLs: - Microsoft.Data.Sqlite.dll: ~400 KB - SQLitePCLRaw.*.dll: ~2-5 MB Total: ~5-7 MB added ``` ### Without Migration Support ``` Total: 0 MB But users cannot migrate from SQLite ``` --- ## Current Status ✅ **Fixed:** - ServiceCollectionExtensions.cs (provider registration) - SqliteExtensions.cs (deleted) - Package reference removed from Emby.Server.Implementations ❌ **Still has SQLite references:** - 9 migration routine files in Jellyfin.Server --- ## Next Steps (Choose One) ### Approach A: Keep Migrations (Recommended) ✅ ```powershell # Add package to Jellyfin.Server.csproj # Then rebuild dotnet build --configuration Release ``` ### Approach B: Remove Migrations ```powershell # Delete migration routines Remove-Item "E:\Projects\pgsql-jellyfin\Jellyfin.Server\Migrations\Routines\Migrate*.cs" Remove-Item "E:\Projects\pgsql-jellyfin\Jellyfin.Server\Migrations\Routines\Reseed*.cs" Remove-Item "E:\Projects\pgsql-jellyfin\Jellyfin.Server\Migrations\Routines\Remove*.cs" # Rebuild dotnet build --configuration Release ``` --- ## Recommendation **✅ Use Approach A: Keep SQLite for migrations** **Why:** 1. Users can still migrate their data 2. Minimal size impact (~5MB) 3. One-time cost (migrations run once) 4. No breaking changes for users transitioning from SQLite **When to use Approach B:** - You're distributing to NEW users only - No one needs SQLite migration - You want absolutely zero SQLite code --- ## Summary **Problem:** CS0006 error due to SQLite references **Root Cause:** Migration code needs SQLite **Solution:** Add `Microsoft.Data.Sqlite` to `Jellyfin.Server.csproj` for migration support **Result:** Build succeeds, migrations work, no SQLite as runtime database --- **What do you prefer?** 1. Keep migrations (add SQLite package back for migrations) 2. Remove migrations (delete migration files, zero SQLite) Let me know and I'll implement it!