From d10cfa4b746e0a8b3165b9eb163dc697e3097897 Mon Sep 17 00:00:00 2001 From: "anchor.lu" Date: Wed, 6 Apr 2022 19:44:14 +0800 Subject: [PATCH 1/2] fix mysql alert column error --- .../github/drinkjava2/jdialects/DDLFeatures.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java b/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java index 857c12c..afbdf6f 100644 --- a/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java +++ b/core/src/main/java/com/github/drinkjava2/jdialects/DDLFeatures.java @@ -849,9 +849,9 @@ public class DDLFeatures { } break; case MySQLDialect: { - ddl.addColumnString = "add"; + ddl.addColumnString = "add column"; ddl.addColumnSuffixString = ""; - ddl.dropColumnString = NOT_SUPPORT; + ddl.dropColumnString = "drop column"; ddl.columnSuffixString = NOT_SUPPORT; ddl.modifyColumnString = NOT_SUPPORT; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; @@ -883,6 +883,7 @@ public class DDLFeatures { break; case MySQL5Dialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -914,7 +915,7 @@ public class DDLFeatures { case MySQL55Dialect: { ddl.addColumnString = "add column"; ddl.addColumnSuffixString = ""; - ddl.dropColumnString = "alter table"; + ddl.dropColumnString = "drop column"; ddl.columnSuffixString = NOT_SUPPORT; ddl.modifyColumnString = NOT_SUPPORT; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; @@ -948,6 +949,7 @@ public class DDLFeatures { break; case MySQL57Dialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -979,6 +981,7 @@ public class DDLFeatures { break; case MySQL57InnoDBDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1010,6 +1013,7 @@ public class DDLFeatures { break; case MySQL5InnoDBDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1041,6 +1045,7 @@ public class DDLFeatures { break; case MySQLInnoDBDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1071,6 +1076,7 @@ public class DDLFeatures { break; case MySQLMyISAMDialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; @@ -1100,6 +1106,7 @@ public class DDLFeatures { break; case MySQL8Dialect: { ddl.addColumnString = "add column"; + ddl.dropColumnString = "drop column"; ddl.addFKeyRefPkeyString = " add constraint _FKEYNAME foreign key (_FK1, _FK2) references _REFTABLE (_REF1, _REF2)"; ddl.closeQuote = "`"; ddl.columnComment = " comment '_COMMENT'"; -- Gitee From b51959dcd0a33c6b338d06e9038b9d50eb346ae3 Mon Sep 17 00:00:00 2001 From: "anchor.lu" Date: Thu, 7 Apr 2022 20:31:48 +0800 Subject: [PATCH 2/2] fix toAddColumnDDL some database lost comment --- .../drinkjava2/jdialects/DDLCreateUtils.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java b/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java index 33776cf..b6b66fc 100644 --- a/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java +++ b/core/src/main/java/com/github/drinkjava2/jdialects/DDLCreateUtils.java @@ -45,7 +45,7 @@ public class DDLCreateUtils {// NOSONAR */ public static String[] toAddColumnDDL(Dialect dialect, ColumnModel... columnModels) { DDLFeatures f = dialect.getDdlFeatures(); - List result = new ArrayList<>(); + List result = new ArrayList<>(); for (ColumnModel c : columnModels) { DialectException.assureNotNull(c.getTableModel(), "columnModel's tableModel can not be null"); String tableName=c.getTableModel().getTableName(); @@ -53,8 +53,10 @@ public class DDLCreateUtils {// NOSONAR StringBuilder sb = new StringBuilder(); sb.append("alter table ").append(tableName).append(" ");// sb.append(f.addColumnString).append(" "); - appendColumnDDLinBuf(dialect, sb, tableName, c);; + appendColumnDDLinBuf(dialect, sb, tableName, c); result.add(sb.toString()); + //对于 没有单独声明DdlFeatures.columnComment 的数据库需要构建独立的 columnComment语句 + buildColumnComment(result, tableName, c,dialect.getDdlFeatures()); } return result.toArray(new String[result.size()]); } @@ -236,10 +238,7 @@ public class DDLCreateUtils {// NOSONAR // column comment on for (ColumnModel c : columns) { - if (!c.getTransientable() && features.supportsCommentOn && c.getComment() != null - && StrUtils.isEmpty(features.columnComment)) - objectResultList.add( - "comment on column " + tableName + '.' + c.getColumnName() + " is '" + c.getComment() + "'"); + buildColumnComment(objectResultList, tableName, c, features); } // index @@ -248,6 +247,20 @@ public class DDLCreateUtils {// NOSONAR // unique buildUniqueDLL(dialect, objectResultList, t); } + + /** + * + * 独立字段描述声明语句 + * @param result + * @param c + */ + protected static void buildColumnComment(List result,String tableName,ColumnModel c,DDLFeatures features) { + if (!c.getTransientable() && features.supportsCommentOn && c.getComment() != null + && StrUtils.isEmpty(features.columnComment)) + result.add( + "comment on column " + tableName + '.' + c.getColumnName() + " is '" + c.getComment() + "'"); + + } private static void appendColumnDDLinBuf(Dialect dialect, StringBuilder buf, String tableName, ColumnModel c) { DDLFeatures features=dialect.getDdlFeatures(); -- Gitee