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 errorDB, 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结构体,默认情况下均不能操作:
DB.Create(&User{Name: "Li", Age: 5}) //Table 'test.users' doesn't existDB.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{}) //生成usersDB.AutoMigrate(&Students{}) //生成students
加SingularTable配置,通过代码创建表,结构体单数生成单数表,结构体复数生成复数表:
DB.AutoMigrate(&User{}) //生成userDB.AutoMigrate(&Students{}) //生成students
文章转载自李田路口,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




