78c8d4256c
- Moved all documentation to docs/ and updated README with categorized links and new docs/INDEX.md - Added HOW_TO_SWITCH_DATABASE.md and several new analysis/action docs - Introduced db-config.ps1 for centralized DB config; all scripts now use it for easy DB switching - Added db-quick.ps1 for interactive diagnostics and index management - Updated Add-All-Indexes.bat to use db-config.ps1 - Added Fix-ItemValues-Performance.ps1 to create 3 critical indexes on ItemValues, addressing 1.3B row seq scan issue - Updated performance_indexes.sql with new ItemValues indexes and ANALYZE - Updated diagnostics.sql and database_report.txt for improved output and clarity - All scripts and docs now reference the new config and index optimization workflow
292 lines
5.0 KiB
Markdown
292 lines
5.0 KiB
Markdown
# 🎯 How to Switch Database Connections
|
|
|
|
## Quick Answer
|
|
|
|
**Edit `db-config.ps1`** and change this line:
|
|
```powershell
|
|
$DB_NAME = "jellyfin_testsdata" # ← Change this
|
|
```
|
|
|
|
To:
|
|
```powershell
|
|
$DB_NAME = "your_database_name" # ← Your database
|
|
```
|
|
|
|
Then reload:
|
|
```powershell
|
|
. .\db-config.ps1
|
|
```
|
|
|
|
---
|
|
|
|
## Step-by-Step Guide
|
|
|
|
### Method 1: Edit Configuration File (Recommended)
|
|
|
|
**Step 1: Open `db-config.ps1`**
|
|
```powershell
|
|
code db-config.ps1 # Or notepad db-config.ps1
|
|
```
|
|
|
|
**Step 2: Change the database name**
|
|
```powershell
|
|
# Line 5:
|
|
$DB_NAME = "jellyfin" # ← Original
|
|
$DB_NAME = "jellyfin_testsdata" # ← Testing database
|
|
$DB_NAME = "your_database" # ← Your choice
|
|
```
|
|
|
|
**Step 3: Save and reload**
|
|
```powershell
|
|
. .\db-config.ps1
|
|
```
|
|
|
|
**Step 4: Verify**
|
|
```powershell
|
|
Write-Host "Connected to: $DB_NAME"
|
|
```
|
|
|
|
---
|
|
|
|
### Method 2: Temporary Override (For One Command)
|
|
|
|
Override just for one command without changing the config:
|
|
|
|
```powershell
|
|
# Run diagnostics against a different database
|
|
$DB_NAME = "other_database"
|
|
& "C:\Program Files\PostgreSQL\18\bin\psql.exe" -U jellyfin -d $DB_NAME -f sql\diagnostics.sql
|
|
```
|
|
|
|
---
|
|
|
|
### Method 3: Use the Quick Runner
|
|
|
|
**Step 1: Run the menu**
|
|
```powershell
|
|
.\db-quick.ps1
|
|
```
|
|
|
|
**Step 2: Select option 6** (Change database)
|
|
|
|
**Step 3: Follow the instructions** shown
|
|
|
|
---
|
|
|
|
## What Gets Updated
|
|
|
|
When you change `db-config.ps1`, these scripts will use the new database:
|
|
|
|
| Script | What It Does |
|
|
|--------|--------------|
|
|
| `db-quick.ps1` | Interactive menu for common tasks |
|
|
| `Add-All-Indexes.bat` | Add performance indexes |
|
|
| Any script that uses `. .\db-config.ps1` | Uses the configured database |
|
|
|
|
---
|
|
|
|
## Common Database Names
|
|
|
|
Based on your setup:
|
|
|
|
```powershell
|
|
# Production
|
|
$DB_NAME = "jellyfin"
|
|
|
|
# Testing
|
|
$DB_NAME = "jellyfin_testsdata"
|
|
|
|
# Development
|
|
$DB_NAME = "jellyfin_dev"
|
|
|
|
# Backup
|
|
$DB_NAME = "jellyfin_backup"
|
|
```
|
|
|
|
---
|
|
|
|
## Switching Between Multiple Databases
|
|
|
|
### Option A: Multiple Config Files
|
|
|
|
Create separate config files:
|
|
|
|
**db-config-prod.ps1**
|
|
```powershell
|
|
$DB_NAME = "jellyfin"
|
|
# ... rest of config
|
|
```
|
|
|
|
**db-config-test.ps1**
|
|
```powershell
|
|
$DB_NAME = "jellyfin_testsdata"
|
|
# ... rest of config
|
|
```
|
|
|
|
**Usage:**
|
|
```powershell
|
|
# Use production
|
|
. .\db-config-prod.ps1
|
|
|
|
# Use testing
|
|
. .\db-config-test.ps1
|
|
```
|
|
|
|
### Option B: Profile Selection
|
|
|
|
Add to `db-config.ps1`:
|
|
|
|
```powershell
|
|
# At the top of db-config.ps1
|
|
param(
|
|
[ValidateSet("prod", "test", "dev")]
|
|
[string]$Profile = "test"
|
|
)
|
|
|
|
switch ($Profile) {
|
|
"prod" { $DB_NAME = "jellyfin" }
|
|
"test" { $DB_NAME = "jellyfin_testsdata" }
|
|
"dev" { $DB_NAME = "jellyfin_dev" }
|
|
}
|
|
```
|
|
|
|
**Usage:**
|
|
```powershell
|
|
# Use production
|
|
. .\db-config.ps1 -Profile prod
|
|
|
|
# Use testing
|
|
. .\db-config.ps1 -Profile test
|
|
```
|
|
|
|
---
|
|
|
|
## Connection String for .NET/Jellyfin
|
|
|
|
If you need to update Jellyfin's connection string:
|
|
|
|
**Location**: `config/system.xml` or `config/network.xml`
|
|
|
|
```xml
|
|
<PostgresConnectionString>
|
|
Host=localhost;
|
|
Port=5432;
|
|
Database=jellyfin_testsdata; <!-- Change this -->
|
|
Username=jellyfin;
|
|
Password=your_password
|
|
</PostgresConnectionString>
|
|
```
|
|
|
|
Or environment variable:
|
|
```powershell
|
|
$env:ConnectionStrings__DefaultConnection = "Host=localhost;Port=5432;Database=jellyfin_testsdata;Username=jellyfin;Password=..."
|
|
```
|
|
|
|
---
|
|
|
|
## Verify Connection
|
|
|
|
Check which database you're connected to:
|
|
|
|
```powershell
|
|
# Load config
|
|
. .\db-config.ps1
|
|
|
|
# Test connection
|
|
& "C:\Program Files\PostgreSQL\18\bin\psql.exe" -U $DB_USER -d $DB_NAME -c "SELECT current_database();"
|
|
```
|
|
|
|
**Expected output:**
|
|
```
|
|
current_database
|
|
------------------
|
|
jellyfin_testsdata
|
|
(1 row)
|
|
```
|
|
|
|
---
|
|
|
|
## Quick Examples
|
|
|
|
### Run diagnostics against test database
|
|
```powershell
|
|
# Edit db-config.ps1 to use jellyfin_testsdata
|
|
. .\db-config.ps1
|
|
.\db-quick.ps1 # Select option 1
|
|
```
|
|
|
|
### Check indexes on production database
|
|
```powershell
|
|
# Edit db-config.ps1 to use jellyfin
|
|
. .\db-config.ps1
|
|
.\db-quick.ps1 # Select option 2
|
|
```
|
|
|
|
### Apply indexes to specific database
|
|
```powershell
|
|
# Edit db-config.ps1
|
|
$DB_NAME = "my_database"
|
|
|
|
# Run
|
|
.\Add-All-Indexes.bat
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### "database does not exist"
|
|
```powershell
|
|
# List available databases
|
|
& "C:\Program Files\PostgreSQL\18\bin\psql.exe" -U jellyfin -l
|
|
|
|
# Create database if needed
|
|
& "C:\Program Files\PostgreSQL\18\bin\psql.exe" -U jellyfin -d postgres -c "CREATE DATABASE jellyfin_testsdata;"
|
|
```
|
|
|
|
### "password authentication failed"
|
|
Update the username in `db-config.ps1`:
|
|
```powershell
|
|
$DB_USER = "your_username"
|
|
```
|
|
|
|
### Changes not taking effect
|
|
Reload the configuration:
|
|
```powershell
|
|
. .\db-config.ps1
|
|
```
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
**To change database:**
|
|
1. Edit `db-config.ps1`
|
|
2. Change `$DB_NAME = "your_database"`
|
|
3. Save
|
|
4. Run `. .\db-config.ps1`
|
|
5. Done! ✅
|
|
|
|
**All scripts will now use the new database!** 🎉
|
|
|
|
---
|
|
|
|
## Quick Reference Card
|
|
|
|
```powershell
|
|
# Switch to testing database
|
|
# 1. Edit db-config.ps1:
|
|
$DB_NAME = "jellyfin_testsdata"
|
|
|
|
# 2. Reload:
|
|
. .\db-config.ps1
|
|
|
|
# 3. Verify:
|
|
Write-Host $DB_NAME
|
|
|
|
# 4. Use:
|
|
.\db-quick.ps1
|
|
```
|
|
|
|
That's it! 🚀
|