Phase 2 Migration: Complete PC consolidation and fixes
## Phase 2 Migration Complete Successfully migrated all 286 active PCs from pc table to machines table. ### Migration Scripts Added/Updated: - **Phase 1.0**: Added ensure_all_machinetypes.sql (machinetypes 15-20) - **Phase 1.5**: Added migrate_equipment_ips_to_communications.sql - **Phase 2**: Updated 01_migrate_pcs_to_machines.sql for duplicate handling - **Phase 2**: Updated 08_update_schema_for_api.sql (rename pcid→machineid) - **Phase 2 Fixes**: Added FIX_migrate_remaining_pcs.sql (60 unmigrated PCs) - **Phase 2 Fixes**: Added FIX_pc_machine_types.sql ### Network Devices View Updated: - **CREATE_vw_network_devices_with_fqdn.sql**: Complete rewrite for Phase 2 - Infrastructure devices (IDF, Server, Switch, Camera, Access Point) query machines table - Printers remain in separate printers table (has fqdn column) - UNION approach: machines (machinetypeid 15-19) + printers table ### Documentation Added: - DATA_MIGRATION_EXPLAINED.md - Full migration architecture - PRODUCTION_MIGRATION_PLAN.md - Production deployment plan - VIEWS_MIGRATION_ANALYSIS.md - Views requiring updates - PRINTER_INSTALLER_FIX_2025-11-20.md - Printer installer fixes - SCHEMA_COMPARISON_REPORT_2025-11-20.md - Phase 2 schema comparison ### ASP Files Updated: - api_printers.asp - Printer API fixes - displaynotifications.asp - UI improvements - install_printer.asp - Installer fixes - v2/api_printers.asp - V2 API updates - v2/install_printer.asp - V2 installer updates ### Migration Results (DEV): - Total machines: 523 (237 equipment + 286 PCs) - Communications: 1,309 - Warranties: 212 - Machine relationships: 201 - PC migration: 286/286 ✓ - Duplicate PCs removed: 166 duplicates cleaned ### Key Achievements: ✓ All 286 active PCs migrated to machines table ✓ Network devices view updated for Phase 2 architecture ✓ pc_to_machine_id_mapping table populated (286 entries) ✓ Duplicate PC records cleaned (452→286) ✓ Schema updates for API compatibility (pcid→machineid) ### Next Steps: - Update PHP Dashboard API for Phase 2 schema (CRITICAL - see POWERSHELL_API_PHASE2_ISSUES.md) - Update PowerShell scripts for Phase 2 schema - Test Update-PC-CompleteAsset-Silent.bat - Production deployment planning 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
291
SCHEMA_COMPARISON_REPORT_2025-11-20.md
Normal file
291
SCHEMA_COMPARISON_REPORT_2025-11-20.md
Normal file
@@ -0,0 +1,291 @@
|
||||
# Database Schema Comparison Report
|
||||
|
||||
**Date:** 2025-11-20
|
||||
**Comparison:** database-backup-11-20-25-eod-with-drop.sql vs Current Dev Database
|
||||
**Dev Backup Created:** /home/camp/projects/windows/shopdb/sql/dev-backup-20251120-105614.sql
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
The backup file contains **Phase 1 schema** (pre-migration) with 63 tables, while the current dev database contains **Phase 2 schema** (post-migration) with 30 tables.
|
||||
|
||||
**Key Findings:**
|
||||
- ✅ **4 tables have schema changes** (businessunits, controllertypes, machine_overrides, machines)
|
||||
- ✅ **8 new Phase 2 tables** exist in dev but not in backup
|
||||
- ✅ **41 legacy tables** exist in backup but not in dev (deprecated/views)
|
||||
|
||||
---
|
||||
|
||||
## Tables Requiring DROP and Recreate
|
||||
|
||||
### 1. Tables with Schema Changes (4 tables)
|
||||
|
||||
These tables exist in both files but have different column structures. They should be **dropped and recreated** from the backup file if you want to revert to the backup schema.
|
||||
|
||||
#### ⚠️ `machines` (CRITICAL - Most Changes)
|
||||
|
||||
**Columns Removed in Dev (exist in backup):**
|
||||
- `ipaddress1` - Removed (now in communications table)
|
||||
- `ipaddress2` - Removed (now in communications table)
|
||||
|
||||
**Columns Added in Dev (not in backup):**
|
||||
- `hostname` - For PC hostnames
|
||||
- `serialnumber` - Equipment serial numbers
|
||||
- `loggedinuser` - Current logged-in user (PCs)
|
||||
- `pctypeid` - Identifies PCs (NULL = equipment, NOT NULL = PC)
|
||||
- `osid` - Foreign key to operatingsystems (PC OS)
|
||||
- `controllertypeid` - Foreign key to controllertypes
|
||||
- `controllerosid` - Controller OS (for CNCs)
|
||||
- `controllermodelid` - Controller model reference
|
||||
- `machinestatusid` - Replaces pcstatusid
|
||||
- `lastupdated` - Auto-updated timestamp
|
||||
- `requires_manual_machine_config` - Configuration flag
|
||||
|
||||
**Impact:** This is the core table for Phase 2 migration. Reverting will break all PC and network device functionality.
|
||||
|
||||
---
|
||||
|
||||
#### ⚠️ `businessunits`
|
||||
|
||||
**Columns Added in Dev (not in backup):**
|
||||
- `liaisonname` - Liaison contact name
|
||||
- `liaisonsso` - Liaison SSO
|
||||
- `facility_id` - Facility identifier
|
||||
- `dt_lead` - DT Lead name
|
||||
- `dt_lead_sso` - DT Lead SSO
|
||||
|
||||
**Impact:** Minor. These are additional metadata fields that don't affect core functionality.
|
||||
|
||||
---
|
||||
|
||||
#### ⚠️ `controllertypes`
|
||||
|
||||
**Columns Added in Dev (not in backup):**
|
||||
- `vendorid` - Foreign key to vendors
|
||||
- `controllermodel` - Controller model name
|
||||
- `controller_os` - Controller OS name
|
||||
- `controllernotes` - Additional notes
|
||||
|
||||
**Impact:** Minor. Enhanced metadata for CNC controllers.
|
||||
|
||||
---
|
||||
|
||||
#### ⚠️ `machine_overrides`
|
||||
|
||||
**Issue:** Same columns but definition differences (likely data types or constraints changed)
|
||||
|
||||
**Impact:** Unknown without detailed field-by-field comparison.
|
||||
|
||||
---
|
||||
|
||||
## New Tables in Dev (Phase 2 Migration)
|
||||
|
||||
These 8 tables exist in the current dev database but NOT in the backup file. They are **Phase 2 migration tables** and should be **preserved**.
|
||||
|
||||
### Phase 2 Tables (DO NOT DROP)
|
||||
|
||||
1. **`communications`** - Unified network interface storage (replaces pc_network_interfaces, printer IPs)
|
||||
2. **`comstypes`** - Communication types (IP, Serial, USB, etc.)
|
||||
3. **`compliance`** - Compliance tracking data
|
||||
4. **`compliancescans`** - Compliance scan history
|
||||
5. **`machinerelationships`** - Machine-to-machine relationships (dualpath, controls)
|
||||
6. **`relationshiptypes`** - Relationship type definitions
|
||||
7. **`machinestatus`** - Replaces pcstatus with broader scope
|
||||
8. **`warranties`** - Warranty tracking
|
||||
|
||||
**These tables are critical for Phase 2 functionality and should NOT be dropped.**
|
||||
|
||||
---
|
||||
|
||||
## Legacy Tables in Backup (Not in Dev)
|
||||
|
||||
These 41 tables exist in the backup file but NOT in the current dev database. Most are **deprecated** or **views**.
|
||||
|
||||
### Deprecated PC Tables (Replaced by machines + communications)
|
||||
|
||||
- `pc` - **DEPRECATED** → Replaced by machines WHERE pctypeid IS NOT NULL
|
||||
- `pc_network_interfaces` - **DEPRECATED** → Replaced by communications
|
||||
- `pc_comm_config` - **DEPRECATED** → Replaced by communications
|
||||
- `pc_dnc_config` - **DEPRECATED** → Integrated into machine relationships
|
||||
- `pc_dualpath_assignments` - **DEPRECATED** → Replaced by machinerelationships
|
||||
- `pctype` - **DEPRECATED** → Now stored in machines.pctypeid
|
||||
- `pcstatus` - **DEPRECATED** → Replaced by machinestatus
|
||||
|
||||
### Deprecated Network Device Tables (Replaced by machines)
|
||||
|
||||
- `accesspoints` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 16
|
||||
- `cameras` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 18
|
||||
- `switches` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 19
|
||||
- `servers` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 20
|
||||
- `idfs` - **DEPRECATED** → Replaced by machines WHERE machinetypeid = 17
|
||||
|
||||
### Legacy Relationship Table
|
||||
|
||||
- `machine_pc_relationships` - **DEPRECATED** → Replaced by machinerelationships
|
||||
|
||||
### Backup Table
|
||||
|
||||
- `pc_model_backup` - Backup table (can be dropped)
|
||||
|
||||
### Views (33 views)
|
||||
|
||||
All views with `vw_` prefix are query views, not base tables:
|
||||
|
||||
- `vw_active_pcs`
|
||||
- `vw_dnc_config`
|
||||
- `vw_dualpath_management`
|
||||
- `vw_engineer_pcs`
|
||||
- `vw_ge_machines`
|
||||
- `vw_idf_inventory`
|
||||
- `vw_infrastructure_summary`
|
||||
- `vw_machine_assignments`
|
||||
- `vw_machine_assignment_status`
|
||||
- `vw_machinetype_comparison`
|
||||
- `vw_machine_type_stats`
|
||||
- `vw_multi_pc_machines`
|
||||
- `vw_network_devices`
|
||||
- `vw_pc_network_summary`
|
||||
- `vw_pc_resolved_machines`
|
||||
- `vw_pcs_by_hardware`
|
||||
- `vw_pc_summary`
|
||||
- `vw_pctype_config`
|
||||
- `vw_recent_updates`
|
||||
- `vw_shopfloor_applications_summary`
|
||||
- `vw_shopfloor_comm_config`
|
||||
- `vw_shopfloor_pcs`
|
||||
- `vw_standard_pcs`
|
||||
- `vw_unmapped_machines`
|
||||
- `vw_vendor_summary`
|
||||
- `vw_warranties_expiring`
|
||||
- `vw_warranty_status`
|
||||
|
||||
**Note:** Views need to be recreated to match Phase 2 schema.
|
||||
|
||||
---
|
||||
|
||||
## Recommendation: What to Drop and Recreate
|
||||
|
||||
### ⚠️ CRITICAL WARNING
|
||||
|
||||
**DO NOT apply the backup file schema if you want to keep Phase 2 functionality!**
|
||||
|
||||
The backup file represents the **OLD Phase 1 schema** before the major PC migration work completed on Nov 17, 2025. Applying it would:
|
||||
|
||||
1. ❌ Lose all Phase 2 migration work (20+ days of development)
|
||||
2. ❌ Break all PC pages (displaypcs.asp, displaypc.asp, editpc.asp, etc.)
|
||||
3. ❌ Break network device display (network_map.asp, network_devices.asp)
|
||||
4. ❌ Lose unified communications table
|
||||
5. ❌ Lose machine relationships functionality
|
||||
6. ❌ Lose compliance tracking
|
||||
7. ❌ Lose warranty management
|
||||
|
||||
### If You Must Revert to Backup Schema
|
||||
|
||||
**Tables to DROP and recreate from backup:**
|
||||
|
||||
1. ✅ `machines` - DROP and recreate (loses Phase 2 columns)
|
||||
2. ✅ `businessunits` - DROP and recreate (loses liaison/facility fields)
|
||||
3. ✅ `controllertypes` - DROP and recreate (loses enhanced metadata)
|
||||
4. ✅ `machine_overrides` - DROP and recreate (definition changes)
|
||||
|
||||
**Tables to DROP from dev (Phase 2 tables):**
|
||||
|
||||
5. ❌ `communications` - DROP (then recreate from backup if needed)
|
||||
6. ❌ `comstypes` - DROP
|
||||
7. ❌ `compliance` - DROP
|
||||
8. ❌ `compliancescans` - DROP
|
||||
9. ❌ `machinerelationships` - DROP
|
||||
10. ❌ `relationshiptypes` - DROP
|
||||
11. ❌ `machinestatus` - DROP (will recreate `pcstatus` from backup)
|
||||
12. ❌ `warranties` - DROP
|
||||
|
||||
**Tables to ADD from backup (legacy tables):**
|
||||
|
||||
13. ➕ `pc` - CREATE from backup
|
||||
14. ➕ `pc_network_interfaces` - CREATE from backup
|
||||
15. ➕ `pc_comm_config` - CREATE from backup
|
||||
16. ➕ `pc_dnc_config` - CREATE from backup
|
||||
17. ➕ `pc_dualpath_assignments` - CREATE from backup
|
||||
18. ➕ `pctype` - CREATE from backup
|
||||
19. ➕ `pcstatus` - CREATE from backup
|
||||
20. ➕ `accesspoints` - CREATE from backup (if needed)
|
||||
21. ➕ `cameras` - CREATE from backup (if needed)
|
||||
22. ➕ `switches` - CREATE from backup (if needed)
|
||||
23. ➕ `servers` - CREATE from backup (if needed)
|
||||
24. ➕ `idfs` - CREATE from backup (if needed)
|
||||
25. ➕ `machine_pc_relationships` - CREATE from backup
|
||||
|
||||
**Views to recreate (33 views):** All `vw_*` views need to be dropped and recreated from backup.
|
||||
|
||||
---
|
||||
|
||||
## Recommended Action Plan
|
||||
|
||||
### Option 1: Keep Phase 2 Schema (RECOMMENDED)
|
||||
|
||||
**DO NOTHING.** Your current dev database is the latest Phase 2 schema with all improvements.
|
||||
|
||||
The backup file is outdated and should not be applied unless you need to revert Phase 2 changes.
|
||||
|
||||
### Option 2: Sync Backup File to Match Dev
|
||||
|
||||
If the backup file is supposed to be the "source of truth", then UPDATE the backup file to include Phase 2 schema:
|
||||
|
||||
1. Export current dev schema: `mysqldump shopdb > new-phase2-backup.sql`
|
||||
2. Replace old backup file with Phase 2 schema
|
||||
3. Use Phase 2 schema for future deployments
|
||||
|
||||
### Option 3: Revert to Backup Schema (NOT RECOMMENDED)
|
||||
|
||||
If you absolutely must revert to Phase 1 schema:
|
||||
|
||||
1. Backup current dev database (already done: dev-backup-20251120-105614.sql)
|
||||
2. Drop Phase 2 tables: communications, compliance, machinerelationships, etc.
|
||||
3. Restore machines, businessunits, controllertypes to backup versions
|
||||
4. Restore all legacy tables (pc, pc_network_interfaces, etc.)
|
||||
5. Recreate all views
|
||||
6. **Accept that all Phase 2 functionality will be lost**
|
||||
|
||||
---
|
||||
|
||||
## Table Count Summary
|
||||
|
||||
| Category | Backup File | Dev Database | Difference |
|
||||
|----------|-------------|--------------|------------|
|
||||
| **Total Tables** | 63 | 30 | -33 |
|
||||
| **Base Tables** | 36 | 30 | -6 |
|
||||
| **Views** | 27 | 0 | -27 |
|
||||
| **Schema Changes** | - | 4 | - |
|
||||
| **New in Dev** | - | 8 | +8 |
|
||||
| **Missing in Dev** | 41 | - | - |
|
||||
|
||||
---
|
||||
|
||||
## Files Generated
|
||||
|
||||
1. **Current Dev Backup:** `/home/camp/projects/windows/shopdb/sql/dev-backup-20251120-105614.sql` (464 KB)
|
||||
2. **This Report:** `/home/camp/projects/windows/shopdb/SCHEMA_COMPARISON_REPORT_2025-11-20.md`
|
||||
|
||||
---
|
||||
|
||||
## Conclusion
|
||||
|
||||
**The backup file (database-backup-11-20-25-eod-with-drop.sql) is from BEFORE Phase 2 migration.**
|
||||
|
||||
Your current dev database has the **Phase 2 schema** with significant improvements:
|
||||
- ✅ Unified machines table for all infrastructure
|
||||
- ✅ Consolidated communications table
|
||||
- ✅ Machine relationships tracking
|
||||
- ✅ Compliance management
|
||||
- ✅ Warranty tracking
|
||||
|
||||
**Recommendation:** Do NOT apply the backup file schema. Keep your current Phase 2 dev schema.
|
||||
|
||||
If production needs updating, use your current dev schema as the source, not the backup file.
|
||||
|
||||
---
|
||||
|
||||
**Generated:** 2025-11-20 10:56
|
||||
**Analyst:** Claude Code
|
||||
**Status:** Analysis Complete ✅
|
||||
Reference in New Issue
Block a user