Closed
Description
GORM Playground Link
Description
迁移数据库时没有生成复合主键。
我预期的sql是CREATE TABLE member
(room_id
bigint,user_id
bigint,status
bigint) PRIMARY KEY (room_id,user_id)
,但是info的结果是
2020/09/23 15:07:11 /gopath/pkg/mod/gorm.io/driver/mysql@v1.0.1/mysql.go:52
[info] replacing callback `gorm:update` from /gopath/pkg/mod/gorm.io/driver/mysql@v1.0.1/mysql.go:52
2020/09/23 15:07:11 /home/lbf/work/gowork/gormtest/main.go:23
[0.199ms] [rows:0] SELECT DATABASE()
2020/09/23 15:07:11 /home/lbf/work/gowork/gormtest/main.go:23
[1.066ms] [rows:0] SELECT count(*) FROM information_schema.tables WHERE table_schema = "gormtest" AND table_name = "member" AND table_type = "BASE TABLE"
2020/09/23 15:07:11 /home/lbf/work/gowork/gormtest/main.go:23
[27.842ms] [rows:0] CREATE TABLE `member` (`room_id` bigint,`user_id` bigint,`status` bigint)
在数据库操作软件中也没有主键约束。
go v1.14
gorm.io/driver/mysql v1.0.1
gorm.io/gorm v1.20.1
CREATE DATABASE IF NOT EXISTS gormtest DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
package main
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
var db *gorm.DB
func main() {
dsn := "root:123456@tcp(localhost:3306)/gormtest?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
fmt.Println("xx")
panic(err)
}
db.AutoMigrate(
Member{},
)
}
type Member struct {
RoomID int64 `json"roomid" gorm:"primaryKey;"`
UserID int64 `json"userid" gorm:"primaryKey;"`
Status int64 `json"status" gorm:"column:status; Type:int; not null;"`
}
func (Member) TableName() string {
return "member"
}