import java.nio.charset.StandardCharsets;
|
import java.nio.file.Files;
|
import java.nio.file.Path;
|
import java.sql.Connection;
|
import java.sql.DriverManager;
|
import java.sql.ResultSet;
|
import java.sql.Statement;
|
|
/** 只读:看测试库的 merchant 表到底有没有那两个列,以及 Flyway 记到哪一版。 */
|
public class TestSchemaProbe {
|
public static void main(String[] args) throws Exception {
|
String url = "jdbc:mysql://127.0.0.1:8134/talent_card_test?useUnicode=true&characterEncoding=utf8"
|
+ "&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false";
|
Path out = Path.of(".scratch/payment-409-probe/out3.txt");
|
StringBuilder text = new StringBuilder();
|
Class.forName("com.mysql.cj.jdbc.Driver");
|
try (Connection c = DriverManager.getConnection(url, "root", "123456")) {
|
text.append("--- merchant 上的相关列 ---\n");
|
dump(text, c, "select column_name from information_schema.columns where table_schema=database() and table_name='merchant' and column_name in ('merchant_rights_config','merchant_type_code','business_address')");
|
text.append("--- flyway 版本(最近 8 条)---\n");
|
dump(text, c, "select version, description, success from flyway_schema_history order by installed_rank desc limit 8");
|
text.append("--- merchant_onboarding_application.business_address 是否存在 ---\n");
|
dump(text, c, "select column_name, column_type from information_schema.columns where table_schema=database() and table_name='merchant_onboarding_application' and column_name='business_address'");
|
}
|
System.out.println(text);
|
Files.writeString(out, text.toString(), StandardCharsets.UTF_8);
|
}
|
|
private static void dump(StringBuilder text, Connection c, String sql) {
|
try (Statement s = c.createStatement(); ResultSet rs = s.executeQuery(sql)) {
|
int n = 0;
|
while (rs.next()) { n++; StringBuilder row = new StringBuilder();
|
for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) row.append(rs.getString(i)).append(" ");
|
text.append(row).append('\n'); }
|
if (n == 0) text.append("(空)\n");
|
} catch (Exception e) { text.append("查询失败:").append(e.getMessage()).append('\n'); }
|
}
|
}
|