diff --git a/models/issue.go b/models/issue.go
index 2912f7e8ef8e..81652771baf2 100644
--- a/models/issue.go
+++ b/models/issue.go
@@ -1978,6 +1978,11 @@ func deleteIssuesByRepoID(sess Engine, repoID int64) (attachmentPaths []string,
 		return
 	}
 
+	if _, err = sess.In("dependent_issue_id", deleteCond).
+		Delete(&Comment{}); err != nil {
+		return
+	}
+
 	var attachments []*Attachment
 	if err = sess.In("issue_id", deleteCond).
 		Find(&attachments); err != nil {
diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index 721b045fdce6..6d27934f6db7 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -228,6 +228,8 @@ var migrations = []Migration{
 	NewMigration("Add projects info to repository table", addProjectsInfo),
 	// v147 -> v148
 	NewMigration("create review for 0 review id code comments", createReviewsForCodeComments),
+	// v148 -> v149
+	NewMigration("remove issue dependency comments who refer to non existing issues", purgeInvalidDependenciesComments),
 }
 
 // GetCurrentDBVersion returns the current db version
diff --git a/models/migrations/v148.go b/models/migrations/v148.go
new file mode 100644
index 000000000000..35d17f5b2cc0
--- /dev/null
+++ b/models/migrations/v148.go
@@ -0,0 +1,14 @@
+// Copyright 2020 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 (
+	"xorm.io/xorm"
+)
+
+func purgeInvalidDependenciesComments(x *xorm.Engine) error {
+	_, err := x.Exec("DELETE FROM comment WHERE dependent_issue_id != 0 AND dependent_issue_id NOT IN (SELECT id FROM issue)")
+	return err
+}
diff --git a/routers/repo/issue.go b/routers/repo/issue.go
index 4bbc355027b5..4c745ed5d734 100644
--- a/routers/repo/issue.go
+++ b/routers/repo/issue.go
@@ -1079,8 +1079,10 @@ func ViewIssue(ctx *context.Context) {
 			}
 		} else if comment.Type == models.CommentTypeRemoveDependency || comment.Type == models.CommentTypeAddDependency {
 			if err = comment.LoadDepIssueDetails(); err != nil {
-				ctx.ServerError("LoadDepIssueDetails", err)
-				return
+				if !models.IsErrIssueNotExist(err) {
+					ctx.ServerError("LoadDepIssueDetails", err)
+					return
+				}
 			}
 		} else if comment.Type == models.CommentTypeCode || comment.Type == models.CommentTypeReview {
 			comment.RenderedContent = string(markdown.Render([]byte(comment.Content), ctx.Repo.RepoLink,