Ver Fonte

fix sync bug

xormplus há 7 anos atrás
pai
commit
d0c39aaa5a
2 ficheiros alterados com 20 adições e 0 exclusões
  1. 6 0
      session_schema.go
  2. 14 0
      session_schema_test.go

+ 6 - 0
session_schema.go

@@ -255,6 +255,12 @@ func (session *Session) Sync2(beans ...interface{}) error {
 		return err
 	}
 
+	session.autoResetStatement = false
+	defer func() {
+		session.autoResetStatement = true
+		session.resetStatement()
+	}()
+
 	var structTables []*core.Table
 
 	for _, bean := range beans {

+ 14 - 0
session_schema_test.go

@@ -251,3 +251,17 @@ func TestUnique_1(t *testing.T) {
 	assert.NoError(t, testEngine.CreateTables(new(UserUnique)))
 	assert.NoError(t, testEngine.CreateUniques(new(UserUnique)))
 }
+
+func TestSync2_2(t *testing.T) {
+	type TestSync2Index struct {
+		Id     int64
+		UserId int64 `xorm:"index"`
+	}
+
+	assert.NoError(t, prepareEngine())
+
+	for i := 0; i < 10; i++ {
+		tableName := fmt.Sprintf("test_sync2_index_%d", i)
+		assert.NoError(t, testEngine.Table(tableName).Sync2(new(TestSync2Index)))
+	}
+}