@@ -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