# 修改或删除CHECK约束,解决违反约束的问题 $classpath = "d:\VUEobject\ModelPlatform\ruoyi-admin\lib\DmJdbcDriver18-8.1.2.192.jar" # 创建修复脚本 $javaCode = @' import java.sql.*; public class FixCheckConstraint { public static void main(String[] args) { try { Class.forName("dm.jdbc.driver.DmDriver"); Connection conn = DriverManager.getConnection("jdbc:dm://192.168.0.145:30236", "WATERSHED", "WaterShed./1224"); Statement stmt = conn.createStatement(); System.out.println("检查当前的CHECK约束..."); // 查看当前约束 ResultSet constraints = conn.getMetaData().getTableConstraints(conn.getCatalog(), null, "WATERSHED_MODEL", "CHECK"); while (constraints.next()) { String constraintName = constraints.getString("CONSTRAINT_NAME"); System.out.println("当前CHECK约束: " + constraintName); } // 删除旧约束 System.out.println("\n删除旧约束..."); stmt.executeUpdate("ALTER TABLE WATERSHED_MODEL DROP CONSTRAINT watershed_model_check_1"); // 直接删除约束,不再添加新约束,让应用程序控制状态值 System.out.println("✅ CHECK约束已删除,不再限制状态值"); // 测试插入任意状态值 System.out.println("\n测试插入任意状态值..."); PreparedStatement pstmt = conn.prepareStatement("INSERT INTO WATERSHED_MODEL (MODEL_NAME, MODEL_TYPE, MODEL_FORMAT, STATUS) VALUES (?, ?, ?, ?)"); pstmt.setString(1, "测试模型"); pstmt.setString(2, "测试类型"); pstmt.setString(3, "test"); pstmt.setString(4, "正常"); // 中文状态值 int rows = pstmt.executeUpdate(); System.out.println("✅ 插入状态值'正常'成功,影响行数: " + rows); // 测试插入另一个状态值 pstmt.setString(4, "维护中"); // 中文状态值 rows = pstmt.executeUpdate(); System.out.println("✅ 插入状态值'维护中'成功,影响行数: " + rows); // 测试插入英文状态值 pstmt.setString(4, "NORMAL"); // 英文状态值 rows = pstmt.executeUpdate(); System.out.println("✅ 插入英文状态值'NORMAL'成功,影响行数: " + rows); System.out.println("\n✅ 修复完成!CHECK约束已删除,不再限制状态值"); stmt.close(); pstmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } '@ # 保存Java代码到文件 $javaCode | Out-File -FilePath "d:\VUEobject\ModelPlatform\FixCheckConstraint.java" -Encoding ascii # 编译Java代码 javac -cp $classpath "d:\VUEobject\ModelPlatform\FixCheckConstraint.java" # 运行Java程序 java -cp "$classpath;d:\VUEobject\ModelPlatform" FixCheckConstraint