fix_check_constraint.ps1 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # 修改或删除CHECK约束,解决违反约束的问题
  2. $classpath = "d:\VUEobject\ModelPlatform\ruoyi-admin\lib\DmJdbcDriver18-8.1.2.192.jar"
  3. # 创建修复脚本
  4. $javaCode = @'
  5. import java.sql.*;
  6. public class FixCheckConstraint {
  7. public static void main(String[] args) {
  8. try {
  9. Class.forName("dm.jdbc.driver.DmDriver");
  10. Connection conn = DriverManager.getConnection("jdbc:dm://192.168.0.145:30236", "WATERSHED", "WaterShed./1224");
  11. Statement stmt = conn.createStatement();
  12. System.out.println("检查当前的CHECK约束...");
  13. // 查看当前约束
  14. ResultSet constraints = conn.getMetaData().getTableConstraints(conn.getCatalog(), null, "WATERSHED_MODEL", "CHECK");
  15. while (constraints.next()) {
  16. String constraintName = constraints.getString("CONSTRAINT_NAME");
  17. System.out.println("当前CHECK约束: " + constraintName);
  18. }
  19. // 删除旧约束
  20. System.out.println("\n删除旧约束...");
  21. stmt.executeUpdate("ALTER TABLE WATERSHED_MODEL DROP CONSTRAINT watershed_model_check_1");
  22. // 直接删除约束,不再添加新约束,让应用程序控制状态值
  23. System.out.println("✅ CHECK约束已删除,不再限制状态值");
  24. // 测试插入任意状态值
  25. System.out.println("\n测试插入任意状态值...");
  26. PreparedStatement pstmt = conn.prepareStatement("INSERT INTO WATERSHED_MODEL (MODEL_NAME, MODEL_TYPE, MODEL_FORMAT, STATUS) VALUES (?, ?, ?, ?)");
  27. pstmt.setString(1, "测试模型");
  28. pstmt.setString(2, "测试类型");
  29. pstmt.setString(3, "test");
  30. pstmt.setString(4, "正常"); // 中文状态值
  31. int rows = pstmt.executeUpdate();
  32. System.out.println("✅ 插入状态值'正常'成功,影响行数: " + rows);
  33. // 测试插入另一个状态值
  34. pstmt.setString(4, "维护中"); // 中文状态值
  35. rows = pstmt.executeUpdate();
  36. System.out.println("✅ 插入状态值'维护中'成功,影响行数: " + rows);
  37. // 测试插入英文状态值
  38. pstmt.setString(4, "NORMAL"); // 英文状态值
  39. rows = pstmt.executeUpdate();
  40. System.out.println("✅ 插入英文状态值'NORMAL'成功,影响行数: " + rows);
  41. System.out.println("\n✅ 修复完成!CHECK约束已删除,不再限制状态值");
  42. stmt.close();
  43. pstmt.close();
  44. conn.close();
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. }
  50. '@
  51. # 保存Java代码到文件
  52. $javaCode | Out-File -FilePath "d:\VUEobject\ModelPlatform\FixCheckConstraint.java" -Encoding ascii
  53. # 编译Java代码
  54. javac -cp $classpath "d:\VUEobject\ModelPlatform\FixCheckConstraint.java"
  55. # 运行Java程序
  56. java -cp "$classpath;d:\VUEobject\ModelPlatform" FixCheckConstraint