偷懒让你的insert报错

问题描述

这天写代码遇到了一个很奇怪的,一个简单地insert的sql,本地没有问题,但是客户那边怎么也插不进去数据,因为是一个异步的插入,并且也没有存储返回信息,客户那边的部署人员也不太会看日志,百思不得诶。

答案

问题出现在,我写sql的时候偷懒了
通常而言,我们写sql正规的插入,字段与插入的值对应,像下面这样写
方式1:

insert into DB(ID,NAME,IP,PORT,SERVICE_NAME,USERNAME,PASSWORD,IS_ACTIVE,
DBID,INST_ID,IS_INOEM,IS_PDB,OEM_ID,IS_RAC,IS_COLLECT,HOST_NAME ,
COLLECT_FREQUENCY) values(#{dbid},#{dbName},#{ipAddress},#{port},
#{instanceName},#{userName},#{password},#{status},#{dbid}, 
#{instanceNumber},#{collectType},#{isPdb},#{oemId},#{isRac},
#{collectOnoff},#{hostName},#{collectFrequency})

但是当时赶时间,项目比较急,就没有这样写,而是直接采用了下面这样的写法,这样写,如果使用你本地的sql文件直接导出来区建表,是不会有问题的,但是如果不是用你本地的sql文件,就会有问题。
方式2:

insert into DB  values(#{dbid},#{dbName},#{ipAddress},#{port},
#{instanceName},#{userName},#{password},#{status},#{dbid}, 
#{instanceNumber},#{collectType},#{isPdb},#{oemId},#{isRac},
#{collectOnoff},#{hostName},#{collectFrequency})

通常来说直接用相同的sql脚本建表,字段的位置,顺序是一致的,但是如果不是使用相同的脚本,那么字段的顺序就乱了,这也是上面这种写法会报错的原因,对应不上了。
我这出现的原因是,原本这张表新加了个字段,但是部署人员,直接在客户那使用

alter table db add(host_name varchar(50));`

直接在原表的基础上加了个字段,导致字段位置变了,所以字段对应不上了,就会报错。

总结

老宝贝,干啥事,可千万别偷懒!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值