database - 如何使用 gorm 设置特定的数据库模式?

标签 database go database-connection go-gorm

我正在开发一个 CRUD 应用程序。我正在从一个 api 读取一个 JSON,我想将这个 JSON 写入一个数据库中,在一个特定的模式中使用“数据库/sql”和 GORM 结构:

type Veiculo struct {
gorm.Model
Codigo                int       `json:"vei_codigo"`
Placa                 string    `json:"vei_placa"`
Nome                  string    `json:"vei_nome"`
}

端点函数:

func CreateVeiculo(c *gin.Context) {

var veiculo model.Veiculo
//id := c.Params.ByName("id")

c.BindJSON(&veiculo)
c.JSON(200, veiculo)

psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+" password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
dbVeiculosGorm, err := gorm.Open("postgres", psqlInfo)
if err != nil {
    panic(err)
}
defer dbVeiculosGorm.Close()

dbVeiculosGorm.AutoMigrate(&model.Veiculo{})

//t := time.Now()
//ts := t.Format("2006-01-02 15:04:05")

dbVeiculosGorm.Create(&model.Veiculo{Placa: veiculo.Placa, Nome: veiculo.Nome}

但是数据库是碰不得的。有多个模式。我必须设置特定的模式吗??我做错了什么?

最佳答案

使用 GORM 2.0 这会起作用。请注意 . 必须为 TablePrefix 添加。

func ConnectDB() (db *gorm.DB, err error) {
    db, err = gorm.Open(postgres.New(postgres.Config{
        DSN:                  `user=test password=test dbname=DB-NAME port=5432 sslmode=disable`,
        PreferSimpleProtocol: true,
    }), &gorm.Config{
        NamingStrategy: schema.NamingStrategy{
            TablePrefix:   "YOUR_SCHEMA_NAME.", // schema name
            SingularTable: false,
        }})
    return
}

关于database - 如何使用 gorm 设置特定的数据库模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54203807/

相关文章:

php - 为 MySQL 数据库中的重复条目设置警告

xml - 导入多个xml,xls到数据库>编辑>然后导出到一个xml文件

go - 如何在 Golang 中使用 gobuffalo/packr

google-app-engine - Cloud Storage - 可以通过 API 检索对象,但在尝试访问 MediaLink 时出现奇怪的错误

Golang : Use one value in conditional from function returning multiple arguments

c# - 如何在另一台 PC 上部署具有数据库的 C# Windows 窗体应用程序?

android - 我如何从我的 android 应用程序连接到 sql server?

c# - 仅在页面加载时连接到数据库一次

mysql - 在具有公共(public)字段的数据库表中存储记录的最佳方式

sql - 3张表,2个数据库,1台服务器……如何加入? (SQL/信息混合)