How to avoid cached plan must not change result type error?
本问题已经有最佳答案,请猛点这里访问。
假设我要在表格中添加一列。如果我在数据库中添加列而没有重新启动应用程序,则我的应用程序开始失败,并显示"缓存的计划一定不能更改结果类型",因为添加此列后执行通配符选择的查询的返回类型会发生变化。
jdbc postgres驱动程序在特定阈值后自动创建准备好的语句,默认阈值为5。
我可以通过将prepareThreshold设置为0来禁用它,这很不好,因为我失去了准备好的语句优化驱动程序为我所做的好处。
或者我必须更改所有SQL语句以指定将要操作的列的确切列表。因此,编写" SELECT * FROM TABLE"之类的语句是不可行的。
还有其他方法可以解决此问题吗?
在SQL查询中使用
如果确实需要,可以捕获异常,关闭准备好的语句,然后使用相同的查询字符串重新创建一个新语句。