Skip to content

Columns names required in sql during struct batch insert #746

Open
@komik966

Description

@komik966

Inserting single struct without providing columns names in sql works properly:
https://github.com/graaphscom/dbmigrat/blob/7bcb3998b1160ab1a7cd72eeccdfd4d092ae16c1/integrity_test.go#L38-L47

_, err := db.NamedExec(
    `insert into dbmigrat_log values (:idx, :repo, :migration_serial, :checksum, default, :description)`,
    migrationLog{
        Idx:             0,
        Repo:            "repo1",
        MigrationSerial: 0,
        Checksum:        fmt.Sprintf("%x", sha1.Sum([]byte(upSql))),
        Description:     "example migration",
    },
)

But inserting array of structs without providing columns names will end with error got 15 parameters but the statement requires 5. Adding columns names to the sql solves error:
https://github.com/graaphscom/dbmigrat/blob/7bcb3998b1160ab1a7cd72eeccdfd4d092ae16c1/integrity_test.go#L85-L90

_, err := db.NamedExec(`
    insert into dbmigrat_log (idx, repo, migration_serial, checksum, applied_at, description)
    values (:idx, :repo, :migration_serial, :checksum, default, :description)
    `,
    []migrationLog{invalidChecksum, redundantMigration, redundantRepo},
)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions