我在学习go的时候,尝试将mariadb集成到我的todo应用程序中。我决定使用gorm。我得到的错误是
2022/10/16 21:47:49 C:/Users/xxx/go/src/go-todo-app/server/main.go:44 Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'RETURNING `id`,`id`' at line 1
[0.000ms] [rows:0] INSERT INTO `todos` (`created_at`,`updated_at`,`deleted_at`,`title`,`done`,`body`) VALUES ('2022-10-16 21:47:49.1','2022-10-16 21:47:49.1',NULL,'Testing',0,'Finish Tutorial') RETURNING `id`,`id`
对于我的http服务器,我使用gofiber v2。
app.Post("/api/todos", func(c *fiber.Ctx) error {
todo := &Todo{}
if err := c.BodyParser(todo); err != nil {
return err
}
newTodo := &Todo{
Title: todo.Title,
Body: todo.Body,
Done: 0,
}
db.Create(&newTodo) // fails here
var todos []Todo
db.Find(&todos)
return c.JSON(todos)
})
我的Todo结构看起来像这样:
type Todo struct {
gorm.Model
ID int `json:"id"`
Title string `json:"title"`
Done int `json:"done"`
Body string `json:"body"`
}
2条答案
按热度按时间cpjpxq1n1#
在旧版MariaDB中显式禁用返回将防止出现语法错误:
gorm mysql驱动程序不应该在没有版本检查的情况下启用
WithReturning
。这是一个错误,应该报告给hem。u5rb5r592#
问题解决了。问题是我用Xampp for windows(PHP 7.4)安装了MariaDb。在那个版本中,RETURNING语句不适用于MariaDb。我按照此指南安装了MySQL 5.7而不是MariaDb。How can I change MariaDB to MySQL in XAMPP?