"; // 1. 移除phone字段的UNIQUE约束 echo "正在移除phone字段的UNIQUE约束...
"; $stmt = $pdo->prepare("ALTER TABLE vip_customers DROP INDEX phone"); $stmt->execute(); echo "✓ phone字段UNIQUE约束已移除
"; // 2. 添加phone和car_number的复合唯一索引 echo "正在添加phone+car_number的复合唯一索引...
"; $stmt = $pdo->prepare("ALTER TABLE vip_customers ADD UNIQUE INDEX idx_phone_car_number (phone, car_number)"); $stmt->execute(); echo "✓ 复合唯一索引已添加
"; // 3. 验证索引 echo "正在验证索引...
"; $stmt = $pdo->prepare("SHOW INDEX FROM vip_customers"); $stmt->execute(); $indexes = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "
✓ 索引列表:
"; echo ""; echo ""; foreach ($indexes as $index) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
TableNon_uniqueKey_nameColumn_name
{$index['Table']}{$index['Non_unique']}{$index['Key_name']}{$index['Column_name']}
"; echo "
✅ 数据库结构更新成功!"; } catch (PDOException $e) { echo "
❌ 错误: " . $e->getMessage() . "
"; // 检查是否是因为索引不存在导致的错误 if (strpos($e->getMessage(), "doesn't exist") !== false) { echo "可能是因为索引已经不存在,尝试直接添加复合索引...
"; try { $stmt = $pdo->prepare("ALTER TABLE vip_customers ADD UNIQUE INDEX idx_phone_car_number (phone, car_number)"); $stmt->execute(); echo "✓ 复合唯一索引已添加
"; } catch (PDOException $e2) { echo "
❌ 添加索引失败: " . $e2->getMessage() . "
"; } } } finally { // 关闭连接 $pdo = null; } ?>