Troubleshooting¶
Common issues and their solutions.
Quick Diagnostics¶
Run these commands first:
# Check overall status
dango status
# Validate configuration
dango validate
# Check specific source
dango info --source my_source
Sync Issues¶
Sync Fails Immediately¶
Symptom: dango sync fails without starting
Check configuration:
Common causes:
| Error | Solution |
|---|---|
| "Source not found" | Check source name in sources.yml |
| "Invalid configuration" | Review source-specific settings |
| "Missing credentials" | Check .dlt/secrets.toml |
Sync Hangs or Times Out¶
Symptom: Sync runs but doesn't complete
Solutions:
# Check if source API is responsive
curl -I https://api.stripe.com/v1/charges
# Enable debug logging
RUNTIME__LOG_LEVEL=DEBUG dango sync --source my_source
# Reduce scope with date range
dango sync --source my_source --start-date 2024-01-01
Partial Sync / Missing Data¶
Symptom: Some records not appearing
Check: 1. Date range filters in source config 2. API rate limits (check logs) 3. Incremental state issues
Reset incremental state:
Authentication Issues¶
OAuth Token Expired¶
Symptom: "Invalid token" or "Unauthorized" errors
Solution:
# Re-authenticate (replace with your provider)
dango auth google_sheets
# Check token status (shows all OAuth credentials)
dango auth status
API Key Invalid¶
Symptom: 401/403 errors during sync
Check:
# Verify secrets file
cat .dlt/secrets.toml
# Test key manually (example for Stripe)
curl https://api.stripe.com/v1/charges \
-u sk_test_xxx:
Common issues: - Key copied with extra whitespace - Wrong key (test vs live) - Key revoked or expired
Google OAuth "Access Denied"¶
Symptom: Can't complete OAuth flow
Solutions: 1. Ensure correct scopes are enabled in Google Cloud Console 2. Check OAuth consent screen configuration 3. Verify redirect URI matches exactly
dbt Issues¶
Models Fail to Run¶
Symptom: dango run fails with SQL errors
Debug:
# Get detailed error
cd dbt && dbt run --select failing_model --debug
# Check compiled SQL
cat dbt/target/compiled/*/models/**/failing_model.sql
Common causes:
| Error | Solution |
|---|---|
| "Relation does not exist" | Run dango sync first |
| "Column not found" | Check source schema changed |
| "Syntax error" | Review SQL in model file |
Staging Models Not Generated¶
Symptom: No models in dbt/models/staging/
Check:
Circular Dependencies¶
Symptom: "Circular dependency" error
Solution: 1. Check model refs: grep -r "ref(" dbt/models/ 2. Draw dependency graph: dbt docs generate && dbt docs serve 3. Refactor to break cycle
Database Issues¶
DuckDB Connection Failed¶
Symptom: Can't connect to database
Check:
# Verify file exists
ls -la data/warehouse.duckdb
# Test connection
duckdb data/warehouse.duckdb "SELECT 1"
Solutions:
# If corrupted, restore from backup
cp backups/warehouse.duckdb data/
# Or clean and re-sync
dango db clean
dango sync
Database Locked¶
Symptom: "Database is locked" error
Cause: Multiple processes accessing DuckDB
Solution:
Disk Space Full¶
Symptom: Sync or queries fail with disk errors
Check:
Solutions:
# Remove old backups
rm -rf backups/*.duckdb
# Clean database
dango db clean
# Compact DuckDB
duckdb data/warehouse.duckdb "VACUUM"
Metabase Issues¶
Can't Access Metabase¶
Symptom: http://localhost:3000 not responding
Check:
Solutions:
# Restart Metabase
dango stop
dango start
# Check Docker logs
docker logs $(docker ps -q --filter name=metabase)
Tables Not Showing¶
Symptom: DuckDB tables not visible in Metabase
Solutions:
# Refresh database connection
dango metabase refresh
# Or manually in Metabase:
# Admin → Databases → Sync database schema
Dashboard Load Failed¶
Symptom: Error loading metabase_export.json
Check JSON validity:
Solutions: - Re-export from working Metabase - Check for version compatibility
Docker Issues¶
Containers Won't Start¶
Symptom: dango start fails
Check:
Solutions:
# Clean Docker state
docker system prune
# Remove Dango containers
docker rm -f $(docker ps -aq --filter name=dango)
# Retry
dango start
Out of Memory¶
Symptom: Containers killed, OOM errors
Solution: Increase Docker memory in Docker Desktop settings
Log Locations¶
Finding Logs¶
| Component | Location |
|---|---|
| Dango CLI | .dango/logs/ |
| dlt pipelines | .dlt/pipelines/*/runtime.log |
| dbt | dbt/logs/ |
| Metabase | docker logs metabase |
Reading Logs¶
# Recent Dango logs (JSON lines format)
ls -lt .dango/logs/ | head -5
cat .dango/logs/activity.jsonl | tail -20
# dbt logs
cat dbt/logs/dbt.log | tail -100
# Search for errors
grep -i "error" .dango/logs/activity.jsonl
Getting Help¶
Gather Information¶
Before asking for help, collect:
# Version info
dango --version
dbt --version
python --version
# Configuration (sanitize secrets!)
cat .dango/sources.yml
cat .dango/project.yml
# Error logs
cat .dango/logs/activity.jsonl | tail -50
Support Channels¶
- GitHub Issues: github.com/getdango/dango/issues
- Discussions: github.com/getdango/dango/discussions
Issue Template¶
**Describe the issue**
What happened vs what you expected
**Steps to reproduce**
1. Run `dango ...`
2. See error
**Environment**
- Dango version: X.X.X
- OS: macOS/Linux/Windows
- Python version: X.X
**Logs**
Common Error Messages¶
| Error | Meaning | Solution |
|---|---|---|
| "Source not enabled" | Source disabled in config | Set enabled: true |
| "Pipeline failed" | dlt sync error | Check dlt logs |
| "Compilation error" | dbt SQL invalid | Check model SQL |
| "Connection refused" | Service not running | Run dango start |
| "Permission denied" | File access issue | Check file permissions |
| "Rate limit exceeded" | API throttling | Wait and retry |
Next Steps¶
- Performance - Optimize slow operations
- Backup & Restore - Recovery procedures
- Community - Get help