Unfortunately some keys are too big to fix within the 65535 limit of TEXT on MySQL this causes issues with these large keys. Therefore increase these fields to MEDIUMTEXT. Fix #20894 Signed-off-by: Andrew Thornton <art27@cantab.net>tags/v1.18.0-rc0
@@ -33,7 +33,7 @@ type GPGKey struct { | |||
OwnerID int64 `xorm:"INDEX NOT NULL"` | |||
KeyID string `xorm:"INDEX CHAR(16) NOT NULL"` | |||
PrimaryKeyID string `xorm:"CHAR(16)"` | |||
Content string `xorm:"TEXT NOT NULL"` | |||
Content string `xorm:"MEDIUMTEXT NOT NULL"` | |||
CreatedUnix timeutil.TimeStamp `xorm:"created"` | |||
ExpiredUnix timeutil.TimeStamp | |||
AddedUnix timeutil.TimeStamp |
@@ -41,7 +41,7 @@ type PublicKey struct { | |||
OwnerID int64 `xorm:"INDEX NOT NULL"` | |||
Name string `xorm:"NOT NULL"` | |||
Fingerprint string `xorm:"INDEX NOT NULL"` | |||
Content string `xorm:"TEXT NOT NULL"` | |||
Content string `xorm:"MEDIUMTEXT NOT NULL"` | |||
Mode perm.AccessMode `xorm:"NOT NULL DEFAULT 2"` | |||
Type KeyType `xorm:"NOT NULL DEFAULT 1"` | |||
LoginSourceID int64 `xorm:"NOT NULL DEFAULT 0"` |
@@ -406,8 +406,13 @@ var migrations = []Migration{ | |||
NewMigration("Drop old CredentialID column", dropOldCredentialIDColumn), | |||
// v223 -> v224 | |||
NewMigration("Rename CredentialIDBytes column to CredentialID", renameCredentialIDBytes), | |||
// Gitea 1.17.0 ends at v224 | |||
// v224 -> v225 | |||
NewMigration("Add badges to users", creatUserBadgesTable), | |||
NewMigration("Add badges to users", createUserBadgesTable), | |||
// v225 -> v226 | |||
NewMigration("Alter gpg_key/public_key content TEXT fields to MEDIUMTEXT", alterPublicGPGKeyContentFieldsToMediumText), | |||
} | |||
// GetCurrentDBVersion returns the current db version |
@@ -8,7 +8,7 @@ import ( | |||
"xorm.io/xorm" | |||
) | |||
func creatUserBadgesTable(x *xorm.Engine) error { | |||
func createUserBadgesTable(x *xorm.Engine) error { | |||
type Badge struct { | |||
ID int64 `xorm:"pk autoincr"` | |||
Description string |
@@ -0,0 +1,29 @@ | |||
// Copyright 2022 The Gitea Authors. All rights reserved. | |||
// Use of this source code is governed by a MIT-style | |||
// license that can be found in the LICENSE file. | |||
package migrations | |||
import ( | |||
"code.gitea.io/gitea/modules/setting" | |||
"xorm.io/xorm" | |||
) | |||
func alterPublicGPGKeyContentFieldsToMediumText(x *xorm.Engine) error { | |||
sess := x.NewSession() | |||
defer sess.Close() | |||
if err := sess.Begin(); err != nil { | |||
return err | |||
} | |||
if setting.Database.UseMySQL { | |||
if _, err := sess.Exec("ALTER TABLE `gpg_key` CHANGE `content` `content` MEDIUMTEXT"); err != nil { | |||
return err | |||
} | |||
if _, err := sess.Exec("ALTER TABLE `public_key` CHANGE `content` `content` MEDIUMTEXT"); err != nil { | |||
return err | |||
} | |||
} | |||
return sess.Commit() | |||
} |