go-gorm/gorm · error

failed to set value %#v to field %s

Error message

failed to set value %#v to field %s

What it means

Error "failed to set value %#v to field %s" thrown in go-gorm/gorm.

Source

Thrown at schema/field.go:588

					return
				}
			}

			if reflectV.Kind() == reflect.Ptr {
				if reflectV.IsNil() {
					field.ReflectValueOf(ctx, value).Set(reflect.New(field.FieldType).Elem())
				} else if reflectV.Type().Elem().AssignableTo(field.FieldType) {
					field.ReflectValueOf(ctx, value).Set(reflectV.Elem())
					return
				} else {
					err = setter(ctx, value, reflectV.Elem().Interface())
				}
			} else if valuer, ok := v.(driver.Valuer); ok {
				if v, err = valuer.Value(); err == nil {
					err = setter(ctx, value, v)
				}
			} else if _, ok := v.(clause.Expr); !ok {
				return fmt.Errorf("failed to set value %#v to field %s", v, field.Name)
			}
		}

		return
	}

	// Set
	switch field.FieldType.Kind() {
	case reflect.Bool:
		field.Set = func(ctx context.Context, value reflect.Value, v interface{}) error {
			switch data := v.(type) {
			case **bool:
				if data != nil && *data != nil {
					field.ReflectValueOf(ctx, value).SetBool(**data)
				}
			case bool:
				field.ReflectValueOf(ctx, value).SetBool(data)
			case int64:

View on GitHub (pinned to 1d6ce99528)

Solutions

  1. Check the value type is assignable to the field type or convertible via reflection.
  2. Implement sql.Scanner/driver.Valuer on the field type for custom conversions.
  3. Ensure the field is exported and addressable (destination passed as pointer).

Example fix

Match the assigned value's type to the field type or implement sql.Scanner/driver.Valuer on the field type.

When it happens

Trigger: Thrown at schema/field.go:588 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of go-gorm/gorm@1d6ce99528 (2026-08-15). Data as JSON: /api/errors/706f3650464df73f. Report an issue: GitHub.