diff --git a/customize_column_test.go b/customize_column_test.go
index 5c63e9d6..c7f72f97 100644
--- a/customize_column_test.go
+++ b/customize_column_test.go
@@ -11,6 +11,13 @@ type CustomizeColumn struct {
 	Date time.Time `gorm:"column:mapped_time"`
 }
 
+// Make sure an ignored field does not interfere with another field's custom
+// column name that matches the ignored field.
+type CustomColumnAndIgnoredFieldClash struct {
+	Body        string `sql:"-"`
+	RawBody     string `gorm:"column:body"`
+}
+
 func TestCustomizeColumn(t *testing.T) {
 	col := "mapped_name"
 	DB.DropTable(&CustomizeColumn{})
@@ -40,3 +47,8 @@ func TestCustomizeColumn(t *testing.T) {
 		t.Errorf("Failed to query CustomizeColumn")
 	}
 }
+
+func TestCustomColumnAndIgnoredFieldClash(t *testing.T) {
+	DB.DropTable(&CustomColumnAndIgnoredFieldClash{})
+	DB.AutoMigrate(&CustomColumnAndIgnoredFieldClash{})
+}
diff --git a/scope.go b/scope.go
index 006259a8..242f473a 100644
--- a/scope.go
+++ b/scope.go
@@ -414,6 +414,9 @@ func (scope *Scope) Fields(noRelations ...bool) map[string]*Field {
 				if field.IsPrimaryKey {
 					hasPrimaryKey = true
 				}
+				if field.IsIgnored {
+					continue
+				}
 				if _, ok := fields[field.DBName]; ok {
 					panic(fmt.Sprintf("Duplicated column name for %v (%v)\n", scope.typeName(), fileWithLineNum()))
 				} else {