From 561aeb92448850e8284c53acbe38eb47f96f74d0 Mon Sep 17 00:00:00 2001 From: pageyang <111@qq.com> Date: Thu, 14 Aug 2025 15:13:19 +0800 Subject: [PATCH 1/3] Insert initial values only when there is no data in the table --- primary_key.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/primary_key.go b/primary_key.go index 9278eb9..e7233ed 100644 --- a/primary_key.go +++ b/primary_key.go @@ -56,9 +56,18 @@ func (s *Sharding) createMySQLSequenceKeyIfNotExist(tableName string) error { if stmt.Error != nil { return fmt.Errorf("failed to create sequence table: %w", stmt.Error) } - stmt = s.DB.Exec("INSERT INTO `" + mySQLSeqName(tableName) + "` VALUES (0)") - if stmt.Error != nil { - return fmt.Errorf("failed to insert into sequence table: %w", stmt.Error) + var count int + err := s.DB.QueryRow("SELECT COUNT(*) FROM `" + seqTable + "`").Scan(&count) + if err != nil { + return fmt.Errorf("failed to check sequence table data: %w", err) + } + + // Insert initial values only when there is no data in the table + if count == 0 { + stmt = s.DB.Exec("INSERT INTO `" + mySQLSeqName(tableName) + "` VALUES (0)") + if stmt.Error != nil { + return fmt.Errorf("failed to insert into sequence table: %w", stmt.Error) + } } return nil } From cceddea0e64de2e383631e84f0953cc718c529c9 Mon Sep 17 00:00:00 2001 From: pageyang <111@qq.com> Date: Thu, 14 Aug 2025 15:26:29 +0800 Subject: [PATCH 2/3] Insert initial values only when there is no data in the table --- primary_key.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/primary_key.go b/primary_key.go index e7233ed..139dc6d 100644 --- a/primary_key.go +++ b/primary_key.go @@ -57,7 +57,7 @@ func (s *Sharding) createMySQLSequenceKeyIfNotExist(tableName string) error { return fmt.Errorf("failed to create sequence table: %w", stmt.Error) } var count int - err := s.DB.QueryRow("SELECT COUNT(*) FROM `" + seqTable + "`").Scan(&count) + err := s.DB.Raw("SELECT COUNT(*) FROM `" + mySQLSeqName(tableName) + "`").Scan(&count) if err != nil { return fmt.Errorf("failed to check sequence table data: %w", err) } From c0b7b3b1a6f257f1141565dd56610d7744ec62d9 Mon Sep 17 00:00:00 2001 From: pageyang <111@qq.com> Date: Thu, 14 Aug 2025 15:29:55 +0800 Subject: [PATCH 3/3] Insert initial values only when there is no data in the table --- primary_key.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/primary_key.go b/primary_key.go index 139dc6d..4b8929b 100644 --- a/primary_key.go +++ b/primary_key.go @@ -57,7 +57,7 @@ func (s *Sharding) createMySQLSequenceKeyIfNotExist(tableName string) error { return fmt.Errorf("failed to create sequence table: %w", stmt.Error) } var count int - err := s.DB.Raw("SELECT COUNT(*) FROM `" + mySQLSeqName(tableName) + "`").Scan(&count) + err := s.DB.Raw("SELECT COUNT(*) FROM `" + mySQLSeqName(tableName) + "`").Scan(&count).Error if err != nil { return fmt.Errorf("failed to check sequence table data: %w", err) }