Open
Description
GORM Playground Link
<I have no time for write tests for your "playground" while working at office, sorry. Maybe later>
Description
I use gorm.io/driver/postgres v1.5.9
, gorm.io/gorm v1.25.11
and go 1.22.6
in our project.
Sample environment:
type Smth struct {
ID string `gorm:"uniqueIndex"`
SmthDifferentID *int64 `gorm:"uniqueIndex"`
}
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{TablePrefix: schemaName + "."},
})
if err != nil {
return fmt.Errorf("database connecting error: %w", err)
}
err = db.Exec("CREATE SCHEMA IF NOT EXISTS " + schemaName).Error
if err != nil {
return fmt.Errorf("creating schema error: %w", err)
}
err = db.AutoMigrate(&Smth{})
if err != nil {
return fmt.Errorf("models automigrating error: %w", err)
}
When I run this code in already initialized before database in older versions of GORM I got this (place SmthDifferentID
instead of FIELD
):
[rows:0] ALTER TABLE "<SERVICE>"."<TABLE>" DROP CONSTRAINT "uni_<TABLE>_<FIELD>"
ERR: models automigrating error: ERROR: constraint "uni_<TABLE>_<FIELD>" of relation "<TABLE>" does not exist (SQLSTATE 42704)
After researching the issue, it was discovered that I have an existing record:
ALTER TABLE ONLY "<SERVICE>"."<TABLE>" ADD CONSTRAINT idx_<TABLE>_<FIELD> UNIQUE (<FIELD>);
GORM tries delete the uni_...
index instead of idx_...
Metadata
Metadata
Assignees
Labels
No labels