Files
shopdb/sql/archive/migration_phase1/README.md
cproudlock 4cdc2f0742 Clean up sql directory after production sync
- Remove 27 completed one-off migration scripts
- Remove old backup file (dev-backup-20251120)
- Remove completed shell scripts for prod import/export
- Archive migration_phase1-4 directories and documentation
- Keep only view_consolidation.sql as active script

All migrations have been applied to production.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 12:33:49 -05:00

265 lines
7.3 KiB
Markdown

# Phase 1: Database Schema Migration Scripts
**Created:** 2025-11-06
**Status:** Ready for DEV testing
**Estimated Time:** 15-20 minutes
---
## Overview
This directory contains Phase 1 migration scripts for consolidating the `pc` table into the `machines` table. These scripts create new infrastructure tables and extend existing tables to support both PCs and machines in a unified schema.
---
## Scripts Included
### Migration Scripts (Run in Order)
1. **01_create_communications_infrastructure.sql** (2-3 min)
- Creates `comstypes` table (8 communication types)
- Creates `communications` table (generic address field)
2. **02_extend_machines_table.sql** (2-3 min)
- Adds 11 new columns to machines table
- Adds indexes for new columns
3. **03_create_pc_machine_types.sql** (1 min)
- Creates 5 PC machine types (Standard, Shopfloor, Engineer, Server, Laptop)
4. **04_create_warranty_infrastructure.sql** (1-2 min)
- Creates `warranties` table
- Creates warranty status views
5. **05_create_compliance_infrastructure.sql** (2-3 min)
- Creates `compliance` table (15 columns)
- Creates `compliancescans` table
- Creates compliance views
6. **06_extend_businessunits_table.sql** (1 min)
- Adds liaison fields to businessunits
7. **07_rename_pcstatus_to_machinestatus.sql** (1 min)
- Renames pcstatus table and columns
- Adds FK constraint to machines
8. **08_create_machine_relationships_infrastructure.sql** (2 min)
- Creates `relationshiptypes` table
- Creates `machinerelationships` table
- Creates relationship views
### Rollback Scripts (Reverse Order)
- **ROLLBACK_08_machine_relationships_infrastructure.sql**
- **ROLLBACK_07_machinestatus_rename.sql**
- **ROLLBACK_06_businessunits_extensions.sql**
- **ROLLBACK_05_compliance_infrastructure.sql**
- **ROLLBACK_04_warranty_infrastructure.sql**
- **ROLLBACK_03_pc_machine_types.sql**
- **ROLLBACK_02_machines_table_extensions.sql**
- **ROLLBACK_01_communications_infrastructure.sql**
---
## Quick Start
### Option 1: Run All Scripts (Recommended for DEV)
```bash
# Run master script (executes all 8 in order)
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < RUN_ALL_PHASE1_SCRIPTS.sql
```
### Option 2: Run Individual Scripts
```bash
# Run each script one at a time
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < 01_create_communications_infrastructure.sql
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < 02_extend_machines_table.sql
# ... and so on
```
### Option 3: Use MySQL Workbench
1. Connect to database
2. Open script file
3. Execute
4. Review output
5. Repeat for each script
---
## Pre-Execution Checklist
- [ ] **Backup created** - Full database backup exists
- [ ] **Dev environment** - Running on DEV, not production
- [ ] **Dependencies** - All required tables exist (machines, pctype, operatingsystems, etc.)
- [ ] **Disk space** - At least 100MB free
- [ ] **Permissions** - User has CREATE, ALTER, DROP privileges
---
## Execution Steps
### 1. Create Backup
```bash
# Backup current database
docker exec dev-mysql mysqldump -u 570005354 -p570005354 shopdb > /tmp/shopdb-before-phase1-$(date +%Y%m%d).sql
```
### 2. Run Migration Scripts
```bash
cd /home/camp/projects/windows/shopdb/sql/migration_phase1
# Option A: Run all at once
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < RUN_ALL_PHASE1_SCRIPTS.sql
# Option B: Run individually for better control
for i in {01..08}; do
echo "Running script $i..."
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < ${i}_*.sql
if [ $? -ne 0 ]; then
echo "ERROR in script $i! Stopping."
exit 1
fi
done
```
### 3. Verify Results
```bash
# Check new tables were created
docker exec dev-mysql mysql -u 570005354 -p570005354 shopdb -e "SHOW TABLES LIKE '%com%'; SHOW TABLES LIKE '%warrant%'; SHOW TABLES LIKE '%compliance%'; SHOW TABLES LIKE '%relationship%';"
# Check machines table structure
docker exec dev-mysql mysql -u 570005354 -p570005354 shopdb -e "DESCRIBE machines;"
# Check machine types
docker exec dev-mysql mysql -u 570005354 -p570005354 shopdb -e "SELECT * FROM machinetypes WHERE machinetype LIKE 'PC -%';"
```
### 4. If Rollback Needed
```bash
# Run rollback scripts in REVERSE order (08 down to 01)
for i in {08..01}; do
echo "Rolling back script $i..."
docker exec -i dev-mysql mysql -u 570005354 -p570005354 shopdb < ROLLBACK_${i}_*.sql
done
```
---
## Tables Created
### New Tables (7)
1. **comstypes** - Communication types (IP, Serial, etc.)
2. **communications** - Generic communications (replaces pc_comm_config + pc_network_interfaces)
3. **warranties** - Warranty tracking
4. **compliance** - Compliance and security tracking
5. **compliancescans** - Historical scan records
6. **relationshiptypes** - Types of machine relationships
7. **machinerelationships** - Machine-to-machine relationships
### Modified Tables (3)
1. **machines** - Added 11 columns (hostname, serialnumber, osid, etc.)
2. **businessunits** - Added 2 columns (liaisonname, liaisonsso)
3. **machinestatus** - Renamed from pcstatus
---
## New Columns in machines Table
1. hostname (VARCHAR 100)
2. loggedinuser (VARCHAR 100)
3. serialnumber (VARCHAR 100)
4. osid (INT 11) - FK to operatingsystems
5. machinestatusid (INT 11) - FK to machinestatus
6. pctypeid (INT 11) - FK to pctype
7. controllertypeid (INT 11) - FK to controllertypes
8. controllerosid (INT 11) - FK to operatingsystems
9. requires_manual_machine_config (TINYINT 1)
10. lastupdated (DATETIME)
11. dateadded (DATETIME)
---
## Views Created
- vw_warranty_status
- vw_warranties_expiring
- vw_compliance_summary
- vw_machine_relationships
- vw_dualpath_machines
---
## Testing Checklist
After running scripts, verify:
- [ ] All 7 new tables exist
- [ ] machines table has 11 new columns
- [ ] 5 PC machine types created
- [ ] machinestatus table exists (pcstatus renamed)
- [ ] All views created successfully
- [ ] No errors in execution
- [ ] Foreign keys in place
- [ ] Indexes created
---
## Common Issues
### Issue: FK constraint fails
**Cause:** Referenced table doesn't exist yet
**Fix:** Run scripts in order (01 through 08)
### Issue: Column already exists
**Cause:** Script already ran
**Fix:** Safe to ignore or run rollback first
### Issue: Permission denied
**Cause:** User lacks privileges
**Fix:** Grant CREATE, ALTER, DROP privileges
---
## Next Steps After Phase 1
1. **Test queries** - Verify new tables work
2. **Phase 2** - Data migration scripts (PC → machines)
3. **Phase 3** - Update views that reference pc table
4. **Phase 4** - Update ASP files
---
## Support
**Documentation:**
- Main design doc: `PC_MACHINES_CONSOLIDATION_PLAN.md`
- Status summary: `MIGRATION_STATUS_SUMMARY.md`
- Quick reference: `MIGRATION_QUICK_REFERENCE.md`
**Questions?**
- Review design documents
- Check CRITICAL_RULES.md
- Test on DEV first!
---
## Notes
- **REVERSIBLE:** All scripts have rollback scripts
- **SAFE:** No data deletion (only schema changes)
- **TESTED:** Design complete, ready for dev testing
- **ESTIMATED TIME:** 15-20 minutes total
**Created:** 2025-11-06
**Last Updated:** 2025-11-06
**Status:** Ready for DEV testing