PostgreSQL 上的 COPY 操作导致 SSL 握手失败

PostgreSQL 上的 COPY 操作导致 SSL 握手失败

我正在使用命令将CSV文件还原到数据库COPY。csv 文件已压缩。我使用此命令:

bunzip2 -c -d online-20110923000001.csv.bz2 | psql -U user -h 127.0.0.1 -d testdb -c "COPY data FROM STDIN WITH CSV HEADER;"

过了一段时间它停止了:

SSL error: ssl handshake failure
connection was lost to database

日志文件显示:

2012-03-06 10:01:10 IRST STATEMENT:  COPY data FROM STDIN WITH CSV HEADER;
2012-03-06 10:01:10 IRST LOG:  SSL error: ssl handshake failure
2012-03-06 10:01:10 IRST CONTEXT:  COPY data, line 8349702
2012-03-06 10:01:10 IRST STATEMENT:  COPY data FROM STDIN WITH CSV HEADER;
2012-03-06 10:01:10 IRST LOG:  could not receive data from client: Connection reset by peer
2012-03-06 10:01:10 IRST CONTEXT:  COPY data, line 8349702

有人能帮忙吗?psql使用 SSL 吗?我该如何禁用它?我重新启动了上面的命令,现在它又正常工作了。我没有更改任何 PostgreSQL 配置。我在 Debian 6 上运行 PostgreSQL 8.4.10。

答案1

一些文档建议您可以使用选项 sslmode 禁用 ssl 连接,如下所示;

$ psql "service=myservice sslmode=disable"

这似乎也是标准方式,包括明确传递参数,谷歌上有几个例子;

$ bunzip2 -c -d online-20110923000001.csv.bz2 |  \
psql "host=127.0.0.1 user=joe password=foo dbname=testdb sslmode=disable" \
-c "COPY data FROM STDIN WITH CSV HEADER;"

还有 conf 文件选项,因此您可以将这些命令放入 /etc/postgresql-8.4/pg_service.conf

[myservice]
dbname=testdb
user=user
host=127.0.0.1
password=password.here

并且可能会像这样工作;

bunzip2 -c -d online-20110923000001.csv.bz2 | psql "service=myservice sslmode=disable"  -c "COPY data FROM STDIN WITH CSV HEADER;"

但是它拒绝了我的调用,但是它是沿着这些思路进行的,并且我手头没有 postgresql 服务器,但我可以稍后在工作箱上更新答案。

手册中的示例页面是;
http://www.postgresql.org/docs/8.4/static/app-psql.html

(嗯。我真的应该把这个问题留给每天使用 postgresql 的人……;-)

相关内容