当我使用 github.com/jinzhu/gorm
时,我正在尝试将 github.com/jinzhu/gorm 库与 graphQL 一起使用
go run github.com/99designs/gqlgen init gqlgen generate
生成一个 graphQL 项目。我编写逻辑代码以将数据保存到MySQL innodb引擎表中。一切都很好,因为这是db。自动迁移不会创建外键约束。
所以。我将库更改为“grom.io/gorm”,外键是在db创建的。调用自动迁移函数,但是当我将数据发布到http服务器时,会弹出很多错误消息。
以下是我的代码。
// project root directory server.go
package main
import (
"fmt"
"log"
"net/http"
"os"
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/playground"
// _ "github.com/go-sql-driver/mysql"
"github.com/yangwawa0323/go-orders-graphql-api/graph"
"github.com/yangwawa0323/go-orders-graphql-api/graph/generated"
"github.com/yangwawa0323/go-orders-graphql-api/graph/model"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
const defaultPort = "8080"
const dbName = "test_db4"
var db *gorm.DB
func initDB() *gorm.DB {
var err error
dataSourceName := "root:secret@tcp(localhost:3306)/?parseTime=True"
//db, err = gorm.Open("mysql", dataSourceName)
db, err = gorm.Open(mysql.Open(dataSourceName), &gorm.Config{})
if err != nil {
fmt.Println(err)
panic("failed to connect database")
}
// db.LogMode(true)
db.Debug()
// Create the database. This is a one-time step.
// Comment out if running multiple times - You may see an error otherwise
db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", dbName))
db.Exec(fmt.Sprintf("USE %s", dbName))
// Migration to create tables for Order and Item schema
db.AutoMigrate(&model.Order{}, &model.Item{})
return db
}
func main() {
port := os.Getenv("PORT")
if port == "" {
port = defaultPort
}
为了防止再次运行命令,替换我定义的模型。我创建了一个新的 go 文件gqlgen generate
千巷猫影
偶然的你
相关分类