gorm支持pgsql数据库的自动迁移么?

gorm 的createTable方法或AutoMigrate方法如何在创建表时,指定表所在的模式?
我的数据库结构如下图

clipboard.png
默认会创建在public模式中,但是我想让表生成在bbb模式中,请问应该如何操作? 直接指定表名么?

因为mysql数据库和pgsql会使用相同的结构,所以有没有除了再创建一个相同的结构体以外其他的解决方式呢?

type Test struct {
    Name string `json:"name" gorm:"type:varchar(60); unique_index:one"`
    Age int `json:"age" gorm:"type:int; unique_index:one"`
}

问题补充:
1、我为pgsql创建了一个与Test结构完全相同的结构体PGTest,且通过重写TableName方法确实可以指定在bbb模式中创建表,但是每次启动时的自动迁移都会进入重新创建的流程。使用hasTable方法先判断表是否存在然后再进行创建的方式,同样无法找到已经存在的表

2、使用gorm提供的firstOrInit方法时,如果当前的数据已存在,进行Save的时候并非是进行update操作,而是insert,导致报错,请问这个应该如何解决?

阅读 3.6k
1 个回答

创建两个gorm db对象,分别对应两个库链接。

在一个对象中通过设置表名垮库建表没问题,但是可能会检查不到表存在。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进