diff --git a/models/fixtures/project.yml b/models/fixtures/project.yml
index f38b5344b..3fa4286c5 100644
--- a/models/fixtures/project.yml
+++ b/models/fixtures/project.yml
@@ -1,6 +1,7 @@
 -
   id: 1
   title: First project
+  owner_id: 0
   repo_id: 1
   is_closed: false
   creator_id: 2
@@ -10,6 +11,7 @@
 -
   id: 2
   title: second project
+  owner_id: 0
   repo_id: 3
   is_closed: false
   creator_id: 3
@@ -19,6 +21,7 @@
 -
   id: 3
   title: project on repo with disabled project
+  owner_id: 0
   repo_id: 4
   is_closed: true
   creator_id: 5
@@ -29,6 +32,7 @@
   id: 4
   title: project on user2
   owner_id: 2
+  repo_id: 0
   is_closed: false
   creator_id: 2
   board_type: 1
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index 4cbcd95d2..d7a4d6e4b 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -469,6 +469,8 @@ var migrations = []Migration{
 	NewMigration("Add NeedApproval to actions tables", v1_20.AddNeedApprovalToActionRun),
 	// v245 -> v246
 	NewMigration("Rename Webhook org_id to owner_id", v1_20.RenameWebhookOrgToOwner),
+	// v246 -> v247
+	NewMigration("Add missed column owner_id for project table", v1_20.AddNewColumnForProject),
 }
 
 // GetCurrentDBVersion returns the current db version
diff --git a/models/migrations/v1_20/v246.go b/models/migrations/v1_20/v246.go
new file mode 100644
index 000000000..e6340ef07
--- /dev/null
+++ b/models/migrations/v1_20/v246.go
@@ -0,0 +1,16 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package v1_20 //nolint
+
+import (
+	"xorm.io/xorm"
+)
+
+func AddNewColumnForProject(x *xorm.Engine) error {
+	type Project struct {
+		OwnerID int64 `xorm:"INDEX"`
+	}
+
+	return x.Sync(new(Project))
+}