- Organized 252 files across project - Root directory: 187 → 2 files (98.9% reduction) - Moved configuration guides to docs/04-configuration/ - Moved troubleshooting guides to docs/09-troubleshooting/ - Moved quick start guides to docs/01-getting-started/ - Moved reports to reports/ directory - Archived temporary files - Generated comprehensive reports and documentation - Created maintenance scripts and guides All files organized according to established standards.
5.2 KiB
Blockscout Logs Review Summary
Date: December 23, 2025
Container: VMID 5000 on pve2 (192.168.11.140)
Status: 🔴 CRITICAL ISSUE - DATABASE MIGRATIONS NOT RUN
🔴 Critical Issue Identified
Root Cause
Blockscout database is empty - no tables exist. The application crashes on startup because it cannot find required database tables.
Key Findings
1. Database Status
- ✅ PostgreSQL Container: Running and healthy
- ❌ Database Schema: EMPTY - No tables exist
- ❌ Migration Status Table: Does not exist (required by Blockscout)
Evidence:
docker exec blockscout-postgres psql -U blockscout -d blockscout -c '\dt'
# Result: Did not find any relations.
2. Blockscout Container Status
- ✅ Container: Running (but constantly restarting)
- ❌ Application: Crashes immediately on startup
- ❌ Phoenix Endpoint: Never starts successfully
Container State: Up but application exits with shutdown
3. Error Pattern Analysis
Primary Errors:
-
ERROR 42P01 (undefined_table) relation "migrations_status" does not exist- Blockscout tries to check migration status before running migrations
- This table doesn't exist because migrations haven't run
-
ERROR 42P01 (undefined_table) relation "blocks" does not exist- Application tries to query blocks table immediately on startup
- Table doesn't exist because schema hasn't been created
-
ERROR 42P01 (undefined_table) relation "transactions" does not exist- Counters and background tasks try to query non-existent tables
- Causes GenServer processes to terminate
-
could not lookup Ecto repo Explorer.Repo because it was not started or it does not exist- Application shutdown occurs before Ecto repo fully initializes
- All database queries fail
Application Lifecycle:
1. Container starts
2. Blockscout application begins initialization
3. Ecto tries to start and query database
4. Queries fail (tables don't exist)
5. GenServers terminate with errors
6. Application shuts down: "Application explorer exited: shutdown"
7. Container restarts (if restart policy is set)
4. Nginx Status
- ✅ Nginx Service: Running and healthy
- ❌ Upstream Connection: Fails (HTTP 502)
- Error:
recv() failed (104: Unknown error) while reading response header from upstream - Cause: Blockscout on port 4000 is not responding
Nginx Log Pattern:
- All requests return
502 Bad Gateway - Upstream (
http://127.0.0.1:4000) not available - Connection refused or prematurely closed
5. PostgreSQL Logs
- ✅ Connection Health: Accepting connections
- ❌ Query Errors: Constant stream of "relation does not exist" errors
- Pattern: Blockscout tries to query tables → PostgreSQL returns error → Application crashes
Missing Tables
The following tables are expected but do not exist:
migrations_status(critical - tracks migration state)blockstransactionsaddressessmart_contractstoken_instancestoken_transferslogsinternal_transactionswithdrawals- ... (and many more)
Impact
- Blockscout Web UI: Not accessible (HTTP 502)
- API Endpoints: Not responding
- Indexing: Not running (requires database schema)
- External Access:
https://explorer.d-bis.orgreturns 502
Solution Required
Immediate Action: Run Database Migrations
Blockscout needs to run its database migrations before it can start. The migrations create all required tables.
Options:
-
Manual Migration (Recommended):
docker exec blockscout /app/bin/blockscout eval "Explorer.Release.migrate()" -
Alternative: Use Blockscout's built-in migration command:
docker exec blockscout /app/bin/blockscout migrate -
Check if auto-migration is enabled in docker-compose.yml environment variables
Next Steps
- ✅ Diagnosis Complete: Database schema missing
- ⏳ Action Required: Run database migrations
- ⏳ Verification: Confirm tables are created
- ⏳ Test: Verify Blockscout starts successfully
- ⏳ Monitor: Check logs for successful startup
Log Locations
| Component | Location | Key Issues |
|---|---|---|
| Blockscout | docker logs blockscout |
Missing tables, application shutdown |
| PostgreSQL | docker logs blockscout-postgres |
"relation does not exist" errors |
| Nginx Error | /var/log/nginx/error.log |
Upstream connection failures (502) |
| Nginx Access | /var/log/nginx/access.log |
All requests return 502 |
Related Files
BLOCKSCOUT_LOGS_REVIEW.md- Detailed log analysis guideBLOCKSCOUT_SSL_COMPLETE_STATUS.md- SSL setup statusBLOCKSCOUT_CONFIGURATION_GUIDE.md- Configuration details
Summary
Status: ❌ BLOCKSCOUT NOT FUNCTIONAL
Root Cause: Database migrations have not been executed. Database is empty with no schema.
Impact: Complete service outage - Blockscout cannot start without database tables.
Resolution: Run database migrations to create required schema, then restart Blockscout.
Next Action: Execute database migrations manually using Blockscout's migration command.