gen icon indicating copy to clipboard operation
gen copied to clipboard

目标数据库定位失败 The target database failed to be located

Open lisongxi opened this issue 1 year ago • 3 comments
trafficstars

我在postgresql的dsn已经明确写了自定义的dbname,但是最后g.ApplyBasic(g.GenerateAllTable()...,)还是只扫描了默认的postgres数据库。 I've explicitly written a custom dbname in postgresql's dsn, but in the end g. ApplyBasic(g.GenerateAllTable()...,) still only scans the default postgres database.

lisongxi avatar Nov 18 '23 02:11 lisongxi

` g := gen.NewGenerator(gen.Config{ OutPath: "./cmd/generate/result/query", // 生成的查询类代码的输出路径 Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, })

gormdb, _ := gorm.Open(postgres.Open("host=127.0.0.1 port=5432 user=postgres password=a778699 dbname=compass sslmode=disable timezone=Asia/Shanghai"))

g.UseDB(gormdb) 

g.ApplyBasic(
	g.GenerateAllTable()...,
)
g.Execute()`

lisongxi avatar Nov 18 '23 02:11 lisongxi

请问您这个问题解决了吗?我在使用 PostgreSQL 时遇到了类似的情况,g.ApplyBasic(g.GenerateAllTable()...,) 报错:

2024/03/25 18:44:45 /web-backend/cmd/postgres/generate.go:34 insufficient arguments
[0.238ms] [rows:-] SELECT * FROM "users" LIMIT 1

MondayCha avatar Mar 25 '24 10:03 MondayCha

请问您这个问题解决了吗?我在使用 PostgreSQL 时遇到了类似的情况,g.ApplyBasic(g.GenerateAllTable()...,) 报错:

2024/03/25 18:44:45 /web-backend/cmd/postgres/generate.go:34 insufficient arguments
[0.238ms] [rows:-] SELECT * FROM "users" LIMIT 1

我使用以下代码切换到目标数据库

gormdb, _ := gorm.Open(postgres.Open("host=127.0.0.1 port=5432 user=postgres password=Post778699. dbname=reportform sslmode=disable timezone=Asia/Shanghai"))

	// 切换到目标数据库(注意,直接写schemas名称,并不需要数据库名称)
	if targetDB := gormdb.Exec("SET search_path TO " + schemaName); targetDB.Error != nil {
		panic("无法切换到目标数据库: " + targetDB.Error.Error())
	}

	g.UseDB(gormdb) // reuse your gorm db

	g.ApplyBasic(
		// Generate structs from all tables of current database
		g.GenerateAllTable()...,
	)
	// Generate the code
	g.Execute()

lisongxi avatar Mar 27 '24 03:03 lisongxi

gormdb, _ := gorm.Open(postgres.Open("host=127.0.0.1 port=5432 user=postgres password=Post778699. dbname=reportform sslmode=disable timezone=Asia/Shanghai"))

// 切换到目标数据库(注意,直接写schemas名称,并不需要数据库名称) if targetDB := gormdb.Exec("SET search_path TO " + schemaName); targetDB.Error != nil { panic("无法切换到目标数据库: " + targetDB.Error.Error()) }

g.UseDB(gormdb) // reuse your gorm db

g.ApplyBasic( // Generate structs from all tables of current database g.GenerateAllTable()..., ) // Generate the code g.Execute()

请问这个可行嘛,我的还是报错: ··· 2024/06/01 11:33:26 /config/workspace/ProdDir/go-devops/cmd/gen/generate.go:68 [error] generate struct from table fail: insufficient arguments panic: generate struct fail ···

sunerpy avatar Jun 01 '24 03:06 sunerpy

请问您这个问题解决了吗?我在使用 PostgreSQL 时遇到了类似的情况,g.ApplyBasic(g.GenerateAllTable()...,) 报错:

2024/03/25 18:44:45 /web-backend/cmd/postgres/generate.go:34 insufficient arguments
[0.238ms] [rows:-] SELECT * FROM "users" LIMIT 1

@MondayCha @sunerpy 将gorm.io/driver/postgres升级到最新版即可

HoneyBBQ avatar Jun 04 '24 20:06 HoneyBBQ