diff options
author | Nate Levesque <nate@thenaterhood.com> | 2023-12-05 09:31:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-05 14:31:13 +0000 |
commit | f891172ef4163bf75ebe00a9e76a4ab60f0d3d4a (patch) | |
tree | 933bea2a732eca411f3b68203a15b063f3251198 /models/migrations/v1_21/v263.go | |
parent | 49b98e45bc6301b74181282a410aa02d8e0b8f30 (diff) | |
download | gitea-f891172ef4163bf75ebe00a9e76a4ab60f0d3d4a.tar.gz gitea-f891172ef4163bf75ebe00a9e76a4ab60f0d3d4a.zip |
handle repository.size column being NULL in migration v263 (#28336)
This resolves a problem I encountered while updating gitea from 1.20.4
to 1.21. For some reason (correct or otherwise) there are some values in
`repository.size` that are NULL in my gitea database which cause this
migration to fail due to the NOT NULL constraints.
Log snippet (excuse the escape characters)
```
ESC[36mgitea |ESC[0m 2023-12-04T03:52:28.573122395Z 2023/12/04 03:52:28 ...ations/migrations.go:641:Migrate() [I] Migration[263]: Add git_size and lfs_size columns to repository table
ESC[36mgitea |ESC[0m 2023-12-04T03:52:28.608705544Z 2023/12/04 03:52:28 routers/common/db.go:36:InitDBEngine() [E] ORM engine initialization attempt #3/10 failed. Error: migrate: migration[263]: Add git_size and lfs_size columns to repository table failed: NOT NULL constraint failed: repository.git_size
```
I assume this should be reasonably safe since `repository.git_size` has
a default value of 0 but I don't know if that value being 0 in the odd
situation where `repository.size == NULL` has any problematic
consequences.
Diffstat (limited to 'models/migrations/v1_21/v263.go')
-rw-r--r-- | models/migrations/v1_21/v263.go | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/models/migrations/v1_21/v263.go b/models/migrations/v1_21/v263.go index 5dccd8bfa0..2c7cbadf0d 100644 --- a/models/migrations/v1_21/v263.go +++ b/models/migrations/v1_21/v263.go @@ -32,7 +32,12 @@ func AddGitSizeAndLFSSizeToRepositoryTable(x *xorm.Engine) error { return err } - _, err = sess.Exec(`UPDATE repository SET git_size = size - lfs_size`) + _, err = sess.Exec(`UPDATE repository SET size = 0 WHERE size IS NULL`) + if err != nil { + return err + } + + _, err = sess.Exec(`UPDATE repository SET git_size = size - lfs_size WHERE size > lfs_size`) if err != nil { return err } |