Skip to content

Commit 231effe

Browse files
committed
Fix parse blank default value, close #3442
1 parent 619d306 commit 231effe

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

schema/field.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -178,41 +178,42 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field {
178178
field.Comment = val
179179
}
180180

181-
defaultValueFunc := strings.Contains(field.DefaultValue, "(") &&
182-
strings.Contains(field.DefaultValue, ")") || strings.ToLower(field.DefaultValue) == "null"
181+
// default value is function or null or blank (primary keys)
182+
skipParseDefaultValue := strings.Contains(field.DefaultValue, "(") &&
183+
strings.Contains(field.DefaultValue, ")") || strings.ToLower(field.DefaultValue) == "null" || field.DefaultValue == ""
183184
switch reflect.Indirect(fieldValue).Kind() {
184185
case reflect.Bool:
185186
field.DataType = Bool
186-
if field.HasDefaultValue && !defaultValueFunc {
187+
if field.HasDefaultValue && !skipParseDefaultValue {
187188
if field.DefaultValueInterface, err = strconv.ParseBool(field.DefaultValue); err != nil {
188189
schema.err = fmt.Errorf("failed to parse %v as default value for bool, got error: %v", field.DefaultValue, err)
189190
}
190191
}
191192
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
192193
field.DataType = Int
193-
if field.HasDefaultValue && !defaultValueFunc {
194+
if field.HasDefaultValue && !skipParseDefaultValue {
194195
if field.DefaultValueInterface, err = strconv.ParseInt(field.DefaultValue, 0, 64); err != nil {
195196
schema.err = fmt.Errorf("failed to parse %v as default value for int, got error: %v", field.DefaultValue, err)
196197
}
197198
}
198199
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
199200
field.DataType = Uint
200-
if field.HasDefaultValue && !defaultValueFunc {
201+
if field.HasDefaultValue && !skipParseDefaultValue {
201202
if field.DefaultValueInterface, err = strconv.ParseUint(field.DefaultValue, 0, 64); err != nil {
202203
schema.err = fmt.Errorf("failed to parse %v as default value for uint, got error: %v", field.DefaultValue, err)
203204
}
204205
}
205206
case reflect.Float32, reflect.Float64:
206207
field.DataType = Float
207-
if field.HasDefaultValue && !defaultValueFunc {
208+
if field.HasDefaultValue && !skipParseDefaultValue {
208209
if field.DefaultValueInterface, err = strconv.ParseFloat(field.DefaultValue, 64); err != nil {
209210
schema.err = fmt.Errorf("failed to parse %v as default value for float, got error: %v", field.DefaultValue, err)
210211
}
211212
}
212213
case reflect.String:
213214
field.DataType = String
214215

215-
if field.HasDefaultValue && !defaultValueFunc {
216+
if field.HasDefaultValue && !skipParseDefaultValue {
216217
field.DefaultValue = strings.Trim(field.DefaultValue, "'")
217218
field.DefaultValue = strings.Trim(field.DefaultValue, "\"")
218219
field.DefaultValueInterface = field.DefaultValue

0 commit comments

Comments
 (0)