$_ENV['DB_HOST'] ?? 'localhost', 'port' => $_ENV['DB_PORT'] ?? '3306', 'database' => $_ENV['DB_DATABASE'] ?? 'fendx_php', 'username' => $_ENV['DB_USERNAME'] ?? 'root', 'password' => $_ENV['DB_PASSWORD'] ?? '', ]; echo "🔍 检查数据库连接...\n"; echo " 主机: {$config['host']}:{$config['port']}\n"; echo " 数据库: {$config['database']}\n"; echo " 用户名: {$config['username']}\n\n"; try { $dsn = "mysql:host={$config['host']};port={$config['port']};charset=utf8mb4"; $pdo = new PDO($dsn, $config['username'], $config['password'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); echo "✅ 数据库连接成功\n"; return ['success' => true, 'pdo' => $pdo, 'config' => $config]; } catch (PDOException $e) { echo "❌ 数据库连接失败: " . $e->getMessage() . "\n"; return ['success' => false, 'error' => $e->getMessage()]; } } // 检查数据库是否存在 function checkDatabaseExists(PDO $pdo, string $database): bool { try { $stmt = $pdo->query("SHOW DATABASES LIKE '$database'"); $result = $stmt->fetch(); if ($result) { echo "✅ 数据库 '$database' 存在\n"; return true; } else { echo "❌ 数据库 '$database' 不存在\n"; return false; } } catch (PDOException $e) { echo "❌ 检查数据库失败: " . $e->getMessage() . "\n"; return false; } } // 创建数据库 function createDatabase(PDO $pdo, string $database): bool { try { $pdo->exec("CREATE DATABASE IF NOT EXISTS `$database` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); echo "✅ 数据库 '$database' 创建成功\n"; return true; } catch (PDOException $e) { echo "❌ 创建数据库失败: " . $e->getMessage() . "\n"; return false; } } // 检查表结构 function checkTables(PDO $pdo, string $database): void { try { $pdo->exec("USE `$database`"); $stmt = $pdo->query("SHOW TABLES"); $tables = $stmt->fetchAll(PDO::FETCH_COLUMN); if (empty($tables)) { echo "⚠️ 数据库中没有表\n"; return; } echo "📊 数据库表:\n"; foreach ($tables as $table) { $stmt = $pdo->query("SELECT COUNT(*) FROM `$table`"); $count = $stmt->fetchColumn(); echo " - $table ($count 条记录)\n"; } } catch (PDOException $e) { echo "❌ 检查表失败: " . $e->getMessage() . "\n"; } } // 主检查函数 function main(): void { echo "🚀 FendxPHP 快速数据库检查\n"; echo str_repeat("=", 40) . "\n"; // 加载环境配置 loadEnv(); // 检查数据库连接 $result = checkDatabaseConnection(); if (!$result['success']) { echo "\n💡 解决建议:\n"; echo " 1. 检查数据库服务是否启动\n"; echo " 2. 验证数据库连接配置\n"; echo " 3. 确认用户权限正确\n"; return; } $pdo = $result['pdo']; $database = $result['config']['database']; echo "\n"; // 检查数据库是否存在 if (!checkDatabaseExists($pdo, $database)) { echo "\n🔧 尝试创建数据库...\n"; if (createDatabase($pdo, $database)) { echo "✅ 数据库已创建,请运行迁移命令:\n"; echo " php bin/console migrate:run\n"; } return; } echo "\n"; // 检查表结构 checkTables($pdo, $database); echo "\n" . str_repeat("=", 40) . "\n"; echo "✅ 数据库检查完成\n"; } // 运行检查 main(); ?>