podcastrr/README_SOLUTION_DB_PATH.md
2025-06-16 22:55:39 -07:00

67 lines
No EOL
2.4 KiB
Markdown

# Solution to Database Path Issue
## Problem
The application was encountering the following errors when starting up:
```
Error running migration add_episode_ordering.py: no such table: podcasts
Error running migration add_podcast_tags.py: no such table: podcasts
Error running migration add_season_explicit_naming_format.py: no such table: episodes
```
And when accessing podcast pages:
```
sqlite3.OperationalError: no such column: podcasts.tags
```
## Root Cause
The issue was caused by a mismatch between where the application was looking for the database file and where the database file was actually located:
1. The application was configured to look for the database file at `sqlite:///podcastrr.db`, which is a relative path to a file in the root directory.
2. However, the actual database file was located in the `instance` directory (`instance/podcastrr.db`).
3. This caused the migrations to fail because they couldn't find the tables they were trying to modify.
## Solution
The solution was to update the database path in the application configuration to point to the correct location:
1. Modified `application.py` to change the default database path from `sqlite:///podcastrr.db` to `sqlite:///instance/podcastrr.db`.
2. This ensures that the application and all migrations look for the database file in the `instance` directory, which is where Flask stores instance-specific files by default.
## Changes Made
In `application.py`, the following change was made:
```python
# Before
SQLALCHEMY_DATABASE_URI=os.environ.get('DATABASE_URI', 'sqlite:///podcastrr.db')
# After
SQLALCHEMY_DATABASE_URI=os.environ.get('DATABASE_URI', 'sqlite:///instance/podcastrr.db')
```
## How to Verify the Solution
1. Run the application:
```
python main.py
```
2. Verify that the application starts without any database-related errors.
3. Access a podcast page to verify that the "no such column: podcasts.tags" error is resolved.
## Preventing Similar Issues in the Future
To prevent similar issues in the future:
1. Always use consistent database paths across the application.
2. Consider using Flask's built-in `app.instance_path` to get the correct instance directory path.
3. Update the `.env.example` file to reflect the correct database path:
```
DATABASE_URI=sqlite:///instance/podcastrr.db
```
4. Document the expected location of the database file in the README.md file.