driver: bad connection
如果数据库执行出现该错误,可能是由于本地数据库连接池的连接已经过期,可以检查一下客户端配置的MaxLifeTime配置是否超过数据库服务端设置的连接最大超时时间。更多客户端配置请参考章节:ORM使用配置
MaxLifeTime
update/insert
使用orm时,配置文件中:
orm
dryRun = "(可选)ORM空跑(只读不写)"
这行配置一定要删掉或者设置为0
否则出现update insert操作不生效的现象。具体请参考文档:ORM高级特性
update insert
cannot find database driver for specified database type "xxx", did you misspell type name "xxx" or forget importing the database driver?
程序代码没有引入依赖的数据库驱动,需要注意从GoFrame v2.1版本开始,需要手动引入社区驱动,请参考:
GoFrame v2.1
DEBUG
SQL
WHERE 0=1
出现 WHERE 0=1 的情况是由于查询条件中存在数组条件,并且数组的长度为0。这种情况ORM无法自动过滤这种空数组条件(这种条件过滤可能会引起业务异常),需要开发者根据业务场景,显示调用OmitEmpty或者OmitEmptyWhere来告诉ORM可以过滤这些空数组的条件。
0
ORM
OmitEmpty
OmitEmptyWhere
解决办法:
config.toml文件 数据库配置的charset设置为utf8mb4默认是utf8
config.toml
charset
utf8mb4
utf8
MySQL存储表情时注意:
MySQL
对数据库进行查询操作时,如果需要查询的字符串中包含%,会有异常响应。 如条件是name='ad%'时,执行查询操作会返回
Parse Query failed: url.QueryUnescape failed for string "ad%": invalid URL escape "%"
数据库字段使用的decimal类型,生成的dao层为float类型,但是查询.All()却编程了string类型,使用Scan的方式又会变成dao层结构体自己的json-tag,数据库字段挂在结构体的orm-tag上的,这种怎么处理呢
2 Comments
digua
对数据库进行查询操作时,如果需要查询的字符串中包含%,会有异常响应。 如条件是name='ad%'时,执行查询操作会返回
surme
数据库字段使用的decimal类型,生成的dao层为float类型,但是查询.All()却编程了string类型,使用Scan的方式又会变成dao层结构体自己的json-tag,数据库字段挂在结构体的orm-tag上的,这种怎么处理呢