postgresql 为什么psql只在我传入一个字符串时才起作用?

pdkcd3nj  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(143)

tlsv1 alert unknown ca会失败

psql -h localhost -p 4566 -d dev -U root --set=sslmode=disable

这是可行的:

psql "port=4566 host=localhost user=root dbname=dev sslmode=disable"

为什么?为什么一个工作,而另一个不工作?--set被忽略了吗?
这是一个错误还是一个功能?

odopli94

odopli941#

--set并没有被忽略,它只是没有做任何有意义的事情。它告诉psql设置名为'sslmode'的psql变量,但是这个变量并不负责任何事情。如果你可以连接,然后运行select :'sslmode';,你会发现它确实被设置了,但是因为它并不负责任何事情,所以这并不重要。
假设您使用的是bash,正确执行此操作的方法是:

PGSSLMODE=disable psql -h localhost -p 4566 -d dev -U root
2fjabf4q

2fjabf4q2#

https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS :
第二种方法有效.因为(sslmode=disable)是连接字符串关键字的一部分.
psql --help会传回:

-s, --single-step        single-step mode (confirm each query)
  -S, --single-line        single-line mode (end of line terminates SQL command)

同样,如果您使用psql --help | grep ssl,则结果为零。这意味着您不能使用simple use psql -h localhost -p 4566 -d dev -U root --sslmode=disable
jjanes的answer之所以有效,是因为:https://www.postgresql.org/docs/current/libpq-envars.html

相关问题