Gorm连接MySQL:

import (
   _ "github.com/go-sql-driver/mysql"
   "github.com/jinzhu/gorm"
)

type User struct {
   Id   int    `json:"id"`
   Name string `json:"name"`
   Age  int    `json:"age"`
}

func GormTest() {
   dsn := username + ":" + password + "@tcp(" + addr + ")/" + datebase + "?charset=utf8&parseTime=true&loc=Local"
   var err error
   DB, err := gorm.Open("mysql", dsn)
   if err != nil {
      panic("MySQL conn failed:" + err.Error())
   }
   //DB.SingularTable(true)
}

数据库有复数表结构:

数据库有复数表结构users,代码中定义user或users结构体,均能操作:

DB.Create(&User{Name: "Li", Age: 5}) //成功
DB.Create(&Users{Name: "Li", Age: 5}) //成功

数据库有单数表结构:

数据库有单数表结构user,代码中定义user或users结构体,均不能操作:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
DB.Create(&User{Name: "Li", Age: 5}) //Table 'test.users' doesn't exist
DB.Create(&Users{Name: "Li", Age: 5}) //Table 'test.users' doesn't exist

解决数据库单数表结构问题:

获取数据库连接时,增加一条配置:

DB.SingularTable(true)

此时,代码结构体单复数和数据库表名单复数必须对应,单对单,复对复:

DB.Create(&User{Name: "Li", Age: 5}) //成功
DB.Create(&Users{Name: "Li", Age: 5}) //Table 'test.users' doesn't exist

通过代码创建数据库表结构:

不加SingularTable配置,通过代码创建表,不管结构体是单数复数,生成的表都为复数:

 DB.AutoMigrate(&User{}) //生成users
 DB.AutoMigrate(&Students{}) //生成students

加SingularTable配置,通过代码创建表,结构体单数生成单数表,结构体复数生成复数表:

 DB.AutoMigrate(&User{}) //生成user
 DB.AutoMigrate(&Students{}) //生成students

公众号:李田路口

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄