import java.sql.*; public class check_account { public static void main(String[] args) { String dbPath = "/home/renjianbo/gerrit_install/review_site/db/ReviewDB"; try { Class.forName("org.h2.Driver"); String url = "jdbc:h2:" + dbPath + ";AUTO_SERVER=TRUE"; Connection conn = DriverManager.getConnection(url, "sa", ""); System.out.println("=== 检查账户信息 ===\n"); // 检查 accounts 表(H2 数据库表名可能是大写) System.out.println("1. Accounts 表:"); Statement stmt = conn.createStatement(); // 先尝试查看所有表 ResultSet tables = conn.getMetaData().getTables(null, null, "%", new String[]{"TABLE"}); System.out.println(" 数据库中的表:"); while (tables.next()) { System.out.println(" - " + tables.getString("TABLE_NAME")); } System.out.println(); // 尝试查询账户(使用大写表名) ResultSet rs = stmt.executeQuery("SELECT ACCOUNT_ID, FULL_NAME, PREFERRED_EMAIL, INACTIVE, REGISTERED_ON FROM ACCOUNTS ORDER BY ACCOUNT_ID"); boolean hasAccounts = false; while (rs.next()) { hasAccounts = true; System.out.println(" Account ID: " + rs.getInt("ACCOUNT_ID")); System.out.println(" Full Name: " + rs.getString("FULL_NAME")); System.out.println(" Email: " + rs.getString("PREFERRED_EMAIL")); System.out.println(" Inactive: " + rs.getInt("INACTIVE")); System.out.println(" Registered: " + rs.getTimestamp("REGISTERED_ON")); System.out.println(); } if (!hasAccounts) { System.out.println(" (无账户)"); } // 检查 account_external_ids 表 System.out.println("2. Account External IDs 表:"); rs = stmt.executeQuery("SELECT ACCOUNT_ID, EMAIL_ADDRESS, EXTERNAL_ID FROM ACCOUNT_EXTERNAL_IDS ORDER BY ACCOUNT_ID"); boolean hasExtIds = false; while (rs.next()) { hasExtIds = true; System.out.println(" Account ID: " + rs.getInt("ACCOUNT_ID")); System.out.println(" Email: " + rs.getString("EMAIL_ADDRESS")); System.out.println(" External ID: " + rs.getString("EXTERNAL_ID")); System.out.println(); } if (!hasExtIds) { System.out.println(" (无外部ID)"); } // 检查管理员组 System.out.println("3. 管理员组成员:"); rs = stmt.executeQuery( "SELECT a.ACCOUNT_ID, a.FULL_NAME " + "FROM ACCOUNTS a " + "JOIN ACCOUNT_GROUP_MEMBERS agm ON a.ACCOUNT_ID = agm.ACCOUNT_ID " + "JOIN ACCOUNT_GROUPS ag ON agm.GROUP_ID = ag.GROUP_ID " + "WHERE ag.NAME = 'Administrators' " + "ORDER BY a.ACCOUNT_ID" ); boolean hasAdmins = false; while (rs.next()) { hasAdmins = true; System.out.println(" Account ID: " + rs.getInt("ACCOUNT_ID") + ", Name: " + rs.getString("FULL_NAME")); } if (!hasAdmins) { System.out.println(" (无管理员)"); } conn.close(); System.out.println("\n=== 检查完成 ==="); } catch (Exception e) { System.err.println("错误: " + e.getMessage()); e.printStackTrace(); } } }