Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 5 additions & 32 deletions db.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
package main

import (
"gorm.io/driver/mysql"
"log"
"math/rand"
"os"
"path/filepath"
"time"

"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite"
"gorm.io/driver/sqlserver"
"gorm.io/gorm"
"gorm.io/gorm/logger"
. "gorm.io/playground/models"
Expand Down Expand Up @@ -44,34 +40,11 @@ func init() {

func OpenTestConnection() (db *gorm.DB, err error) {
dbDSN := os.Getenv("GORM_DSN")
switch os.Getenv("GORM_DIALECT") {
case "mysql":
log.Println("testing mysql...")
if dbDSN == "" {
dbDSN = "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True&loc=Local"
}
db, err = gorm.Open(mysql.Open(dbDSN), &gorm.Config{})
case "postgres":
log.Println("testing postgres...")
if dbDSN == "" {
dbDSN = "user=gorm password=gorm host=localhost dbname=gorm port=9920 sslmode=disable TimeZone=Asia/Shanghai"
}
db, err = gorm.Open(postgres.Open(dbDSN), &gorm.Config{})
case "sqlserver":
// CREATE LOGIN gorm WITH PASSWORD = 'LoremIpsum86';
// CREATE DATABASE gorm;
// USE gorm;
// CREATE USER gorm FROM LOGIN gorm;
// sp_changedbowner 'gorm';
log.Println("testing sqlserver...")
if dbDSN == "" {
dbDSN = "sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm"
}
db, err = gorm.Open(sqlserver.Open(dbDSN), &gorm.Config{})
default:
log.Println("testing sqlite3...")
db, err = gorm.Open(sqlite.Open(filepath.Join(os.TempDir(), "gorm.db")), &gorm.Config{})
log.Println("testing mysql...")
if dbDSN == "" {
dbDSN = "gorm:gorm@tcp(localhost:9910)/gorm?charset=utf8&parseTime=True&loc=Local"
}
db, err = gorm.Open(mysql.Open(dbDSN), &gorm.Config{})

if debug := os.Getenv("DEBUG"); debug == "true" {
db.Logger = db.Logger.LogMode(logger.Info)
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ require (
golang.org/x/crypto v0.41.0 // indirect
golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b // indirect
golang.org/x/mod v0.27.0 // indirect
golang.org/x/sync v0.16.0 // indirect
golang.org/x/text v0.28.0 // indirect
golang.org/x/sync v0.17.0 // indirect
golang.org/x/text v0.29.0 // indirect
golang.org/x/tools v0.36.0 // indirect
gorm.io/cmd/gorm v0.1.1-0.20250825094947-30e7d4fa1f1f // indirect
gorm.io/datatypes v1.2.5 // indirect
Expand Down
40 changes: 18 additions & 22 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,30 @@ package main

import (
"testing"

"gorm.io/playground/models"
)

// GORM_REPO: https://github.com/go-gorm/gorm.git
// GORM_BRANCH: master
// TEST_DRIVERS: sqlite, mysql, postgres, sqlserver
// TEST_DRIVERS: mysql

func TestGORM(t *testing.T) {
user := models.User{Name: "jinzhu"}

DB.Create(&user)

var result models.User
if err := DB.First(&result, user.ID).Error; err != nil {
t.Errorf("Failed, got error: %v", err)
type GormBugTest struct {
IDS []string `gorm:"serializer:json;column:ids;type:varchar(1000);not null;default:'名称';comment:ids" json:"ids"`
}
}

// func TestGORMGen(t *testing.T) {
// user := models.User{Name: "jinzhu2"}
// ctx := context.Background()

// gorm.G[models.User](DB).Create(ctx, &user)
for i := 0; i < 3; i++ {
// If a field in a database table uses the serializer tag and AutoMigrate is used,
// then even if there are no changes to this field
// ,AutoMigrate will still perform an ALTER on the table every time.

// This will alter the ids field of the GormBugTest table four times,
// even though the field hasn't changed at all.
err := DB.AutoMigrate(GormBugTest{})
if err != nil {
t.Errorf("Failed, got error: %v", err)
}
}

// if u, err := gorm.G[models.User](DB).Where(g.User.ID.Eq(user.ID)).First(ctx); err != nil {
// t.Errorf("Failed, got error: %v", err)
// } else if u.Name != user.Name {
// t.Errorf("Failed, got user name: %v", u.Name)
// }
// }
t.Log("This will alter the ids field of the GormBugTest table four times,even though the field hasn't changed at all.")
t.Log("这里会alter四次GormBugTest表的ids字段 虽然字段没有任何变化")
}
Loading