From 61d9e26c49c05628184e5eaaf3ff910f58463d4b Mon Sep 17 00:00:00 2001 From: valitovgaziz Date: Sat, 27 Sep 2025 05:48:51 +0500 Subject: [PATCH] modified: pkg/database/postgres.go fix autoMigrate --- serv_golang_rest_api/pkg/database/postgres.go | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/serv_golang_rest_api/pkg/database/postgres.go b/serv_golang_rest_api/pkg/database/postgres.go index ba2cae8..3bc7947 100644 --- a/serv_golang_rest_api/pkg/database/postgres.go +++ b/serv_golang_rest_api/pkg/database/postgres.go @@ -29,17 +29,24 @@ func NewPostgresConnection(cfg *config.Config) (*gorm.DB, error) { } func autoMigrate(db *gorm.DB) error { - models := []interface{}{ + // Сначала добавляем колонку как NULLABLE + if err := db.Exec(`ALTER TABLE users ADD COLUMN IF NOT EXISTS password VARCHAR(255)`).Error; err != nil { + return err + } + + // Затем обновляем существующие записи (если нужно установить дефолтное значение) + if err := db.Exec(`UPDATE users SET password = '' WHERE password IS NULL`).Error; err != nil { + return err + } + + // И только потом меняем на NOT NULL + if err := db.Exec(`ALTER TABLE users ALTER COLUMN password SET NOT NULL`).Error; err != nil { + return err + } + + // Или используйте автоматические миграции GORM + return db.AutoMigrate( &model.User{}, - // Добавьте другие модели здесь - } - - for _, m := range models { - if err := db.AutoMigrate(m); err != nil { - return fmt.Errorf("failed to migrate model: %w", err) - } - } - - log.Println("Database migration completed") - return nil + // другие модели... + ) } \ No newline at end of file