假设我想在表格中添加一列。如果我在DB中添加列而不重新启动应用程序,则我的应用程序开始失败,“缓存计划不能更改结果类型”,因为在此列添加后执行通配符选择的查询的返回类型更改。
jdbc postgres驱动程序在某个阈值后自动创建预准备语句,默认阈值为5。
要么我可以通过将prepareThreshold设置为0来禁用它,这是不好的,因为我失去了预备语句优化驱动程序为我做的好处。
或者我必须更改所有SQL语句以指定它将操作的列的确切列表。因此,编写像“SELECT * FROM TABLE”这样的语句是不可行的。
有没有其他方法可以解决这个问题?
答案 0 :(得分:2)
在SQL查询中使用*
是一个坏习惯(在count(*)
之类的某些情况下除外),因为查询可能会突然失败或在添加列时表现不同。
如果你真的想要它,你可以捕获异常,关闭预准备语句并重新创建一个具有相同查询字符串的新语句。