-
yangm 数据达人Lv4
发表于2020-12-30 13:56
楼主
本帖最后由 yangm 于 2020-12-30 14:35 编辑
1.Could not connectto server
错误信息为:
could not connect to server: Connection refused
Is the server running on host "172.21.10.130" and accepting
TCP/IP connections on port 5432?
通常是因为数据库没有连接的权限导致的
注意修改两个文件
(1)pg_hba.conf
此文件中需要添加允许当前客户端所在的机器连接的权限,一般格式如下:
# IPv4 local connections:host:
host all all 127.0.0.1/32 identhost
host all all 0.0.0.0/0 md5
(2)postgresql.conf
需要修改建监听的端口号
格式如下:
*listen_addresses='localhost'
listen_addresses = '*'
2.column am.amcanorder doesnot exist
jdbc驱动版本不对,需要更换为适合当前数据库服务器版本的 jdbc
此问题在使用 ArteryBase 时出现多次。
替换方法:将下载好的驱动放到WEB-INF\lib文件夹中,删除文件夹中自带的驱动,清理缓存,重启。
3.使用默认schema,或未指定schema导致资源丢失
可在 url 中添加currentSchema=xxx 来指定所需使用的 schema
目前已知的,PostgreSQL和ArteryBase的驱动可以,Greenplum的驱动此参数无效
如果用pg驱动连接 gp环境,此参数也是有效的。
其他方式可参见连接池的配置文件中 default_schema 和 initsql的说明。
例:greenplum:set search_path to xxx
oracle:alter session set current_schema=xxx
PostgreSQL:currentSchema=xxx
可使用select current_schema()查看当前使用的schema。
如果schema是大写的,配置url时,应该需要使用界定符,如果表名是大写的,查询时也需要使用界定符
如:schema是大写的SCHEMA01
jdbc:postgresql://localhost:5432/mydatabase?currentSchema="SCHEMA01"
表t1是小写的,表T2是大写的,在数据库管理那边,进行查询时正确的写法
select * from "SCHEMA01"."t1"
select * from "SCHEMA01"."T2"
select * from t1
select * from "T2"
注意:不能select * from T2来查询T2,因为T2表名是大写,必须加双引号。
4.greenplum 驱动问题
Greenplum 的驱动和数据库之间不是一一对应的关系,某个版本的驱动,是可以兼容多个数据库版本的。
同一个版本号的驱动,也会有发布时间的差别,即小版本号的区别。
现在我们常用的 greenplum-5.1.4.jar,有2015年发布的,也有 2017年发布的。
遇到此类驱动,建议数据库驱动的发布日期要晚于数据库的发布日期。
例如,数据库的打包时间是2016年,那么就使用 2017年的驱动,而不是2015年的。
替换方法:将下载好的驱动放到WEB-INF\lib文件夹中,删除文件夹中自带的驱动,清理缓存,重启。
5.Unexpected mismatch ofclient_encoding and server_encoding
Greenplum 中出现该报错。原因是客户端编码和数据库端编码不一致。
该错误信息的资料,针对 Greenplum 的较少,针对PostgreSQL 的较多,但针对 PostgreSQL 的,一般是连接成功以后做写入数据的操作才出现的,或者是设计到乱码问题。
Greenplum 中,是在创建连接的时候报错,所以无法通过创建连接以后使用SQL修改session级别参数的方式调整。
Greenplum 的 jdbc 的文档未找到,不确定URL中参数如何设置。
项目上遇到该问题的解决方法是,修改了用户的客户端编码。推测为 client_ecoding 的值,修改为和客户端保持一致。
1.Could not connectto server
错误信息为:
could not connect to server: Connection refused
Is the server running on host "172.21.10.130" and accepting
TCP/IP connections on port 5432?
通常是因为数据库没有连接的权限导致的
注意修改两个文件
(1)pg_hba.conf
此文件中需要添加允许当前客户端所在的机器连接的权限,一般格式如下:
# IPv4 local connections:host:
host all all 127.0.0.1/32 identhost
host all all 0.0.0.0/0 md5
(2)postgresql.conf
需要修改建监听的端口号
格式如下:
*listen_addresses='localhost'
listen_addresses = '*'
2.column am.amcanorder doesnot exist
jdbc驱动版本不对,需要更换为适合当前数据库服务器版本的 jdbc
此问题在使用 ArteryBase 时出现多次。
替换方法:将下载好的驱动放到WEB-INF\lib文件夹中,删除文件夹中自带的驱动,清理缓存,重启。
3.使用默认schema,或未指定schema导致资源丢失
可在 url 中添加currentSchema=xxx 来指定所需使用的 schema
目前已知的,PostgreSQL和ArteryBase的驱动可以,Greenplum的驱动此参数无效
如果用pg驱动连接 gp环境,此参数也是有效的。
其他方式可参见连接池的配置文件中 default_schema 和 initsql的说明。
例:greenplum:set search_path to xxx
oracle:alter session set current_schema=xxx
PostgreSQL:currentSchema=xxx
可使用select current_schema()查看当前使用的schema。
如果schema是大写的,配置url时,应该需要使用界定符,如果表名是大写的,查询时也需要使用界定符
如:schema是大写的SCHEMA01
jdbc:postgresql://localhost:5432/mydatabase?currentSchema="SCHEMA01"
表t1是小写的,表T2是大写的,在数据库管理那边,进行查询时正确的写法
select * from "SCHEMA01"."t1"
select * from "SCHEMA01"."T2"
select * from t1
select * from "T2"
注意:不能select * from T2来查询T2,因为T2表名是大写,必须加双引号。
4.greenplum 驱动问题
Greenplum 的驱动和数据库之间不是一一对应的关系,某个版本的驱动,是可以兼容多个数据库版本的。
同一个版本号的驱动,也会有发布时间的差别,即小版本号的区别。
现在我们常用的 greenplum-5.1.4.jar,有2015年发布的,也有 2017年发布的。
遇到此类驱动,建议数据库驱动的发布日期要晚于数据库的发布日期。
例如,数据库的打包时间是2016年,那么就使用 2017年的驱动,而不是2015年的。
替换方法:将下载好的驱动放到WEB-INF\lib文件夹中,删除文件夹中自带的驱动,清理缓存,重启。
5.Unexpected mismatch ofclient_encoding and server_encoding
Greenplum 中出现该报错。原因是客户端编码和数据库端编码不一致。
该错误信息的资料,针对 Greenplum 的较少,针对PostgreSQL 的较多,但针对 PostgreSQL 的,一般是连接成功以后做写入数据的操作才出现的,或者是设计到乱码问题。
Greenplum 中,是在创建连接的时候报错,所以无法通过创建连接以后使用SQL修改session级别参数的方式调整。
Greenplum 的 jdbc 的文档未找到,不确定URL中参数如何设置。
项目上遇到该问题的解决方法是,修改了用户的客户端编码。推测为 client_ecoding 的值,修改为和客户端保持一致。