【地表最强】mysql报错Column count doesn't match value count at row 1

本文记录了一次调试过程中遇到的MySQL插入错误Columncountdoesn'tmatchvaluecountatrow1的问题,通过调整JDBC连接配置中的useServerPrepStmts属性解决了问题,并探讨了该属性的作用及可能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在调试程序的过程中,执行sql报错Column count doesn't match value count at row 1

首先看了执行的sql,插入的sql语句并没有什么问题,然后偶然发现了jdbc连接mysql的配置如下。


以上连接属性中使用了useServerPrepStmts=true属性,然后我将这个属性删除掉,重新启动程序,竟然执行程序成功了!


然后我在网上搜索此属性的作用,整理如下

useServerPrepStmts
如果服务器支持,是否使用服务器端预处理语句? 默认值为“真”。


mysql执行一个预编译操作后,会将sql模板(即带占位符“?”的sql),以及参数列表(模板中用各个占位符表示)缓存,下一次有同样的sql模板发来的时候,直接将参数传给这个模板,拼好后execute。虽然mysql的预编译功能对性能影响不大,但在jdbc中使用PreparedStatement是必要的,可以有效地防止sql注入

看了如上的一些说法,但我还是不明白为什么我会出现如上的问题,如果有人知道或者遇到过这样的问题,欢迎指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值