3.9 KiB
3.9 KiB
Database Initialization and Management Guide
Quick Start
Your database has been successfully initialized! Here's what you need to know:
✅ Current Status
- Database: MariaDB 11.2 running in Docker container
infoscreen-db - Schema: Up to date (Alembic revision:
b5a6c3d4e7f8) - Default Data: Admin user and client group created
- Academic Periods: Austrian school years 2024/25 (active), 2025/26, 2026/27
🔐 Default Credentials
- Admin Username:
infoscreen_admin - Admin Password: Check your
.envfile forDEFAULT_ADMIN_PASSWORD - Database User:
infoscreen_admin - Database Name:
infoscreen_by_taa
Database Management Commands
Initialize/Reinitialize Database
cd /workspace/server
python initialize_database.py
Check Migration Status
cd /workspace/server
alembic current
alembic history --verbose
Run Migrations Manually
cd /workspace/server
alembic upgrade head # Apply all pending migrations
alembic upgrade +1 # Apply next migration
alembic downgrade -1 # Rollback one migration
Create New Migration
cd /workspace/server
alembic revision --autogenerate -m "Description of changes"
Database Connection Test
cd /workspace/server
python -c "
from database import Session
session = Session()
print('✅ Database connection successful')
session.close()
"
Initialization Scripts
Core Scripts (recommended order):
alembic upgrade head- Apply database schema migrationsinit_defaults.py- Create default user groups and admin userinit_academic_periods.py- Set up Austrian school year periods
All-in-One Script:
initialize_database.py- Complete database initialization (runs all above scripts)
Development/Testing Scripts:
dummy_clients.py- Creates test client data for developmentdummy_events.py- Creates test event data for developmentsync_existing_clients.py- One-time MQTT sync for existing clients
Database Schema Overview
Main Tables:
users- User authentication and rolesclients- Registered client devicesclient_groups- Client organization groupsevents- Scheduled events and presentationsevent_media- Media files for eventsconversions- File conversion jobs (PPT → PDF)academic_periods- School year/semester managementschool_holidays- Holiday calendaralembic_version- Migration tracking
Environment Variables:
DB_CONN=mysql+pymysql://infoscreen_admin:KqtpM7wmNdM1DamFKs@db/infoscreen_by_taa
DB_USER=infoscreen_admin
DB_PASSWORD=KqtpM7wmNdM1DamFKs
DB_NAME=infoscreen_by_taa
DB_HOST=db
Troubleshooting
Database Connection Issues:
# Check if database container is running
docker ps | grep db
# Check database logs
docker logs infoscreen-db
# Test direct connection
docker exec -it infoscreen-db mysql -u infoscreen_admin -p infoscreen_by_taa
Migration Issues:
# Check current state
cd /workspace/server && alembic current
# Show migration history
cd /workspace/server && alembic history
# Show pending migrations
cd /workspace/server && alembic show head
Reset Database (⚠️ DESTRUCTIVE):
# Stop services
docker-compose down
# Remove database volume
docker volume rm infoscreen_2025_db-data
# Restart and reinitialize
docker-compose up -d db
cd /workspace/server && python initialize_database.py
Production Deployment
The production setup in docker-compose.prod.yml includes automatic database initialization:
server:
command: >
bash -c "alembic -c /app/server/alembic.ini upgrade head &&
python /app/server/init_defaults.py &&
exec gunicorn server.wsgi:app --bind 0.0.0.0:8000"
This ensures the database is properly initialized on every deployment.