更新数据库字段类型报错,头疼了

weixin_38090274 2019-09-20 10:10:12
尝试用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)报错,做了很多尝试也没有解决。反复检查拼接也没看出所以然来,希望社区朋友们遇到过的告知一下!!
不胜感激

...全文
26 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38101261 2019-09-20
  • 打赏
  • 举报
回复
解决了,感谢 发明家。 语法错误

430

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧