尝试用golang写Struct自动生成表、添加字段、更新字段类/最终是为了实现一个带缓存策略的ORM
现在遇到***更新字段类型时***一直报错:
目的:当代码struct的nickname类型长度从18变为其他值时,自动刷数据库字段属性。
```
if strings.Index(err.Error(), "Duplicate column name") >= 0 { //重复的列,则修改列的参数类型
str := fmt.Sprintf(`alter table %s alter column %s`, tb, keys[i])
_, err = this.db.Exec(str)
if err != nil {
fmt.Println(str)
fmt.Println(err)
}
} else {
panic(err)
}
输出->
str->alter table player alter column nickname varchar(12) NOT NULL
err->Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(12) NOT NULL' at line 1
```
用来生成表格的Struct
```
type Player struct {
Uuid string `db:"uuid varchar(36) NOT NULL PRIMARY KEY"`
Account string `db:"account varchar(60) NOT NULL"`
Name string `db:"nickname varchar(12) NOT NULL"`
Level int16 `db:"lv smallint NOT NULL DEFAULT 1"`
}
```
第一次生成的数据库如下图:
尝试修改到verchar(12)报错,做了很多尝试也没有解决。反复检查拼接也没看出所以然来,希望社区朋友们遇到过的告知一下!!
不胜感激
![QQ图片20190907163334.png](https://static.studygolang.com/190907/a7ec177a6d7d27f49c40d6a69e134830.png)