Postgresql CITUDB错误:错误:无法执行准备分布式查询计划

Postgresql CITUDB错误:错误:无法执行准备分布式查询计划,postgresql,citus,Postgresql,Citus,我刚完成了CITUDB教程。本地使用“psql”效果很好。但是,当我尝试使用本机postgres jdbc执行相同的查询时,我得到了错误: ERROR: ERROR: cannot execute PREPARE for a distributed query plan Query = SELECT count(*) FROM customer_reviews 本地工程罚款 postgres=# SELECT count(*) FROM customer_reviews; 计数 589859

我刚完成了CITUDB教程。本地使用“psql”效果很好。但是,当我尝试使用本机postgres jdbc执行相同的查询时,我得到了错误:

ERROR: ERROR: cannot execute PREPARE for a distributed query plan
Query = SELECT count(*) FROM customer_reviews
本地工程罚款

postgres=# SELECT count(*) FROM customer_reviews;
计数 589859 (1排)


PgJDBC使用服务器端准备的语句,看起来这个“CITUDB”工具不支持它们


尝试,这样PgJDBC就不会尝试准备语句;看见如果我没记错的话,您可以改为在JDBC URL中使用
p repareThreshold=0
,尽管这会影响所有连接。

PgJDBC使用服务器端准备的语句,看起来这个“citudb”工具不支持它们


尝试,这样PgJDBC就不会尝试准备语句;看见如果我没有记错的话,您可以在JDBC URL中用
p repareThreshold=0设置它,尽管这会影响所有连接。

我使用的是使用JDBC的RazorSQL查询工具。但我改用ODBC,现在可以工作了。

我使用的是使用JDBC的RazorSQL查询工具。但我改用ODBC,现在正在工作。

引用CITUDB维基上的页面

此错误最常见的原因是,使用ODBC/JDBC驱动程序的工具通常会在默认情况下尝试使用PREPARE语句,而CITUDB目前不支持该语句。通过降级JDBC或ODBC协议版本以避免使用PREPARE语句,可以很容易地解决这个问题

对于ODBC驱动程序,根据您使用的特定驱动程序/工具,有时会有一个选项来禁用PREPARE语句。或者,您可以将协议恢复到7.2版,这几乎总是可能的

对于JDBC驱动程序,确切的步骤更多地取决于特定的驱动程序。但是,您几乎总是可以在驱动程序属性中或在连接字符串中指定protocolVersion,将其设置为2

引用CITUDB维基上的页面

此错误最常见的原因是,使用ODBC/JDBC驱动程序的工具通常会在默认情况下尝试使用PREPARE语句,而CITUDB目前不支持该语句。通过降级JDBC或ODBC协议版本以避免使用PREPARE语句,可以很容易地解决这个问题

对于ODBC驱动程序,根据您使用的特定驱动程序/工具,有时会有一个选项来禁用PREPARE语句。或者,您可以将协议恢复到7.2版,这几乎总是可能的

对于JDBC驱动程序,确切的步骤更多地取决于特定的驱动程序。但是,您几乎总是可以在驱动程序属性中或在连接字符串中指定protocolVersion,将其设置为2


我对CITUDB和JDBC集成也有同样的问题,但是有一个解决方案

您已经为协议版本提供了连接字符串,如

connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres?protocolVersion=2");
connection=DriverManager.getConnection(“jdbc:postgresql://localhost:5432/postgres?protocolVersion=2");
目前CITUDB JDBC仅适用于协议版本2


我得到了结果,希望它能解决您的问题。

我也遇到了与CITUDB和JDBC集成相同的问题,但有一个解决方案

您已经为协议版本提供了连接字符串,如

connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres?protocolVersion=2");
connection=DriverManager.getConnection(“jdbc:postgresql://localhost:5432/postgres?protocolVersion=2");
目前CITUDB JDBC仅适用于协议版本2


我得到了结果,希望它能解决你的问题。

你有什么解决办法吗?现在我面临着同样的错误。你能帮medid解决这个问题吗?现在我面临着同样的错误。你能帮助我吗