could not determine data type of parameter $1
query := `
UPDATE type
SET characteristics = jsonb_insert(
characteristics, '{$1}', '{"type": "$2", "measure": "$3"}'::jsonb
)
WHERE id=$4`
tag, err := conn.Exec(ctx, query,
c.Name, // string
c.Type, // string
c.Measure, // string
c.ID, // uint64
)
query := `
UPDATE type
SET characteristics = jsonb_insert(
characteristics, '{$1}'::text, '{"type": "$2", "measure": "$3"}'::jsonb
)
WHERE id=$4`
query := fmt.Sprintf(`
UPDATE type
SET characteristics = jsonb_insert(
characteristics, '{%s}', '{"type": "%s", "measure": "%s"}'::jsonb
)
WHERE id=%d`,
c.Name,
c.Type,
c.Measure,
c.ID)
tag, err := conn.Exec(ctx, query)
'{$1}'постгрес воспринимает это как просто строку, а не как параметр для вставки.
Пробовал явно указывать тип $1
query := `
UPDATE type
SET characteristics = jsonb_insert(
characteristics, '{$1}'::text, '{"type": "$2", "measure": "$3"}'::jsonb
)
WHERE id=$4`
Так тоже ошибка : function jsonb_insert(jsonb, text, jsonb) does not exist
jsonb_insert(target jsonb, path text[], new_value jsonb [, insert_after boolean])Поэтому строка `'{$1}'::text'`, должна быть `'{$1}'::text[]'`. (Но и это не совсем поможет)
query := `
UPDATE type
SET characteristics = jsonb_insert(
characteristics, array[$1::text],
jsonb_build_object('type', $2, 'measure', '$3')
)
WHERE id=$4`
tag, err := conn.Exec(ctx, query,
c.Name, // string
c.Type, // string
c.Measure, // string
c.ID, // uint64
)
query := `
UPDATE type
SET characteristics = jsonb_insert(
characteristics, array[$1::text], $2
)
WHERE id=$3`
tag, err := conn.Exec(ctx, query,
c.Name, // string
struct{ // лучше вынести как отдельный тип
Type string `json:"type"`
Measure string `json:"measure"`
}{c.Type, c.Measure}
c.ID, // uint64
)
UPDATE type
SET characteristics = jsonb_insert(
characteristics, array[$1], jsonb_build_object('type', $2, 'measure', $3)
)
WHERE id=$4
update type set characteristics[$1] = jsonb_build_object('type', $2, 'measure', $3) WHERE id=$4;
[]string
query := `
UPDATE type
SET characteristics = jsonb_insert(
characteristics, '{$1}', '{"type": "$2", "measure": "$3"}'::jsonb
)
WHERE id=$4`
tag, err := conn.Exec(ctx, query,
[]string{c.Name}, // Вот здесь попробуйте []string
c.Type, // string
c.Measure, // string
c.ID, // uint64
)