Open sleddev opened 9 months ago
When inserting go arrays or slices in a GORM model, the generated SQL uses them as records, so the insert fails.
For example:
type Test struct { Data []float64 `gorm:"type:float8[]"` } test := Test{Data: []float64{8, 4, 2, 1, 0.5}} DB.Create(&test)
gives the SQL:
INSERT INTO "tests" ("data") VALUES ((8,4,2,1,0.5))
And I get the error ERROR: column "data" is of type double precision[] but expression is of type record (SQLSTATE 42804)
ERROR: column "data" is of type double precision[] but expression is of type record (SQLSTATE 42804)
Instead, the SQL should be:
INSERT INTO "tests" ("data") VALUES ('{8,4,2,1,0.5}')
or
INSERT INTO "tests" ("data") VALUES (ARRAY [8,4,2,1,0.5])
Explain your user case and expected results
When inserting go arrays or slices in a GORM model, the generated SQL uses them as records, so the insert fails.
For example:
gives the SQL:
And I get the error
ERROR: column "data" is of type double precision[] but expression is of type record (SQLSTATE 42804)
Instead, the SQL should be:
or