更新数据库字段类型报错,头疼了
尝试用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)报错,做了很多尝试也没有解决。反复检查拼接也没看出所以然来,希望社区朋友们遇到过的告知一下!!
不胜感激

现在遇到***更新字段类型时***一直报错:
目的:当代码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)报错,做了很多尝试也没有解决。反复检查拼接也没看出所以然来,希望社区朋友们遇到过的告知一下!!
不胜感激
...全文
相关推荐
数据库oracle rac 修改db_unique_name参数
数据库oracle rac 修改db_unique_name参数
Mybatis批量更新报错问题
主要介绍了Mybatis批量更新报错的问题及解决办法,包括mybatis批量更新的两种方式,需要的的朋友参考下
Office 2007 Access Database Engine
如果你的c#程序采用oledb方式连接access数据库,需要安装此 engine
详解Oracle修改字段类型方法总结
本篇文章主要介绍了Oracle修改字段类型方法总结,小编觉得不错,非常具有实用价值,有兴趣的可以了解一下。
RESTORE DATABASE命令还原SQLServer 2005 数据库
RESTORE DATABASE命令还原SQLServer 2005 数据库


其他技术讨论专区
