我今天开始玩 gorm,但不幸的是遇到了一些愚蠢的错误,并坚持了一段时间。起初我在 Windows 上运行 MySQL 5 (5.0.51b) 和最新版本的 go。我确实去获取了 gorm 和 mysql 驱动程序,它编译时没有错误并且能够连接(可能),但是每当我尝试根据声明的类型创建表时,它都会抛出一个不提供信息的错误(因为错误是由 MySQL 抛出)。这是我的代码:
mport (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
type User struct {
id int
}
func main() {
db, err := gorm.Open("mysql", "root:vertrigo@/shop?charset=utf8&parseTime=True&loc=Local")
fmt.Println(err)
a := db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&User{})
fmt.Println(a)
}
所以这个模型的目标是非常基础的,例如一个只有一列的表格。现在是输出:
< nil > &{0x111e2230 错误 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ') ENGINE=InnoDB' 附近使用正确的语法 0 0x112d4060 0x112d4000 0x112d8140 0 {0x112a3f20} false map[gorm:table_options:ENGINE=InnoDB] map[]}
第一个是连接错误,这意味着它能够连接,但是查询不是那么好,并且除了 gorm 生成的 SQL 由于某种原因失败之外,该错误几乎没有说明。所以问题是是否有人知道为什么会抛出错误以及是否有任何解决方案。