From 40d0c52d8b0c8362f8eac63cacd4628c76198541 Mon Sep 17 00:00:00 2001 From: thinkgos Date: Thu, 3 Aug 2023 10:36:14 +0800 Subject: [PATCH] fix:: fix default value --- driver/mysql/sql_test.go | 26 +++++++++++++------------- driver/mysql/sql_tidb.go | 10 +++++++--- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/driver/mysql/sql_test.go b/driver/mysql/sql_test.go index caf4770..4174ef2 100644 --- a/driver/mysql/sql_test.go +++ b/driver/mysql/sql_test.go @@ -11,19 +11,19 @@ import ( func Test_Tidb_SQL_Parse(t *testing.T) { sql := "CREATE TABLE `announce` (" + - "`id` bigint NOT NULL AUTO_INCREMENT DEFAULT 'abc' COMMENT '主键'," + - "`title` varchar(255) NOT NULL COMMENT '标题'," + - "`content` varchar(2048) NOT NULL DEFAULT '{}' COMMENT '内容'," + - "`value1` float unsigned NOT NULL DEFAULT '1' COMMENT '值1'," + - "`value2` float(10,1) unsigned NOT NULL DEFAULT '2' COMMENT '值2'," + - "`value2` double(16,2) NOT NULL DEFAULT '3' COMMENT '值3'," + - "`value3` enum('00','SH') NOT NULL DEFAULT '4' COMMENT '值4'," + - "`created_at` datetime NOT NULL COMMENT '发布时间'," + - "`updated_at` datetime NOT NULL," + - "`deleted_at` bigint NOT NULL DEFAULT '0'," + - "PRIMARY KEY (`id`) USING BTREE," + - "KEY `uk_value1_value2` (`value1`,`value2`) USING BTREE," + - "CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`value1`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT" + + "`id` bigint NOT NULL AUTO_INCREMENT DEFAULT '111' COMMENT '主键'," + + "`title` varchar(255) DEFAULT NULL COMMENT '标题'" + + // "`content` varchar(2048) NOT NULL DEFAULT '{}' COMMENT '内容'," + + // "`value1` float unsigned NOT NULL DEFAULT '1' COMMENT '值1'," + + // "`value2` float(10,1) unsigned NOT NULL DEFAULT '2' COMMENT '值2'," + + // "`value2` double(16,2) NOT NULL DEFAULT '3' COMMENT '值3'," + + // "`value3` enum('00','SH') NOT NULL DEFAULT '4' COMMENT '值4'," + + // "`created_at` datetime NOT NULL COMMENT '发布时间'," + + // "`updated_at` datetime NOT NULL," + + // "`deleted_at` bigint NOT NULL DEFAULT '0'," + + // "PRIMARY KEY (`id`) USING BTREE," + + // "KEY `uk_value1_value2` (`value1`,`value2`) USING BTREE," + + // "CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`value1`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT" + ")ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='公告-面向所有人的消息';" d := &SQLTidb{ diff --git a/driver/mysql/sql_tidb.go b/driver/mysql/sql_tidb.go index 8082a1e..221c31a 100644 --- a/driver/mysql/sql_tidb.go +++ b/driver/mysql/sql_tidb.go @@ -102,9 +102,13 @@ func parserCreateTableStmtColumn(col *ast.ColumnDef) (*schema.Column, error) { case ast.ColumnOptionAutoIncrement: coldef.AddAttrs(&mysql.AutoIncrement{}) case ast.ColumnOptionDefaultValue: - coldef.Default = &schema.Literal{V: formatExprNode(opt.Expr)} + val := formatExprNode(opt.Expr) + if !strings.EqualFold(val, "null") { + coldef.Default = &schema.Literal{V: strings.Trim(formatExprNode(opt.Expr), `"`)} + } + case ast.ColumnOptionComment: - coldef.AddAttrs(&schema.Comment{Text: formatExprNode(opt.Expr)}) + coldef.AddAttrs(&schema.Comment{Text: strings.Trim(formatExprNode(opt.Expr), `"`)}) } } @@ -338,5 +342,5 @@ func formatExprNode(e ast.ExprNode) string { } b := &strings.Builder{} e.Format(b) - return strings.Trim(b.String(), `"`) + return b.String() }