diff --git a/scripts/migrate_phase1.php b/scripts/migrate_phase1.php index 4aa5e45..d72ec60 100644 --- a/scripts/migrate_phase1.php +++ b/scripts/migrate_phase1.php @@ -18,13 +18,13 @@ echo "════════════════════════ $migrations = [ // 1. Add deleted_at to companies - 'companies_soft_delete' => "ALTER TABLE companies ADD COLUMN IF NOT EXISTS deleted_at DATETIME NULL DEFAULT NULL", + 'companies_soft_delete' => "ALTER TABLE companies ADD COLUMN deleted_at DATETIME NULL DEFAULT NULL", // 2. Add deleted_at to users - 'users_soft_delete' => "ALTER TABLE users ADD COLUMN IF NOT EXISTS deleted_at DATETIME NULL DEFAULT NULL", + 'users_soft_delete' => "ALTER TABLE users ADD COLUMN deleted_at DATETIME NULL DEFAULT NULL", // 3. Add email_hash to users (if missing) - 'users_email_hash' => "ALTER TABLE users ADD COLUMN IF NOT EXISTS email_hash VARCHAR(64) NULL", + 'users_email_hash' => "ALTER TABLE users ADD COLUMN email_hash VARCHAR(64) NULL", // 4. Create subscription_plans table 'subscription_plans_table' => " @@ -68,16 +68,16 @@ $migrations = [ ", // 6. Add plan_id column to subscriptions if upgrading from old schema - 'subscriptions_plan_id' => "ALTER TABLE subscriptions ADD COLUMN IF NOT EXISTS plan_id VARCHAR(20) NOT NULL DEFAULT 'free'", + 'subscriptions_plan_id' => "ALTER TABLE subscriptions ADD COLUMN plan_id VARCHAR(20) NOT NULL DEFAULT 'free'", // 7. Add max_users column to subscriptions if missing - 'subscriptions_max_users' => "ALTER TABLE subscriptions ADD COLUMN IF NOT EXISTS max_users INT NOT NULL DEFAULT 1", + 'subscriptions_max_users' => "ALTER TABLE subscriptions ADD COLUMN max_users INT NOT NULL DEFAULT 1", // 8. Add trial_ends_at to subscriptions if missing - 'subscriptions_trial' => "ALTER TABLE subscriptions ADD COLUMN IF NOT EXISTS trial_ends_at DATETIME NULL", + 'subscriptions_trial' => "ALTER TABLE subscriptions ADD COLUMN trial_ends_at DATETIME NULL", // 9. Index on subscriptions status - 'subscriptions_status_idx' => "CREATE INDEX IF NOT EXISTS idx_sub_status ON subscriptions(status)", + 'subscriptions_status_idx' => "CREATE INDEX idx_sub_status ON subscriptions(status)", ]; $success = 0; @@ -91,8 +91,8 @@ foreach ($migrations as $name => $sql) { $success++; } catch (\PDOException $e) { $msg = $e->getMessage(); - // Ignore "duplicate column" or "already exists" errors - if (str_contains($msg, 'Duplicate column') || str_contains($msg, 'already exists')) { + // Ignore "duplicate column" (1060), "duplicate key name" (1061), or "already exists" errors + if (str_contains($msg, 'Duplicate column') || str_contains($msg, 'Duplicate key name') || str_contains($msg, 'already exists')) { echo " ⏭️ {$name} (already exists)\n"; $skipped++; } else {