Invalid argument
后来知道link-local地址需要指定网卡设备,于是在IPV6地址后面加上"%eth0"就可以了。
- conn = PQconnectdb("host=fe80::250:56ff:fe8d:6927%eth0 port=5432 dbname=postgres");
上面是Key Value形式连接字符串,使用下面的URL形式的连字符串时,仍然失败。
- conn = PQconnectdb("postgresql://postgres@[fe80::250:56ff:fe8d:6927%eth0]:5432/postgres");
invalid percent-encoded token: "fe80::250:56ff:fe8d:6927%eth0"
查了下libpq源码,原来"%"是URL的中的转义字符,libpq遇到"%"时按照URL的编码规则进行解码,发现"%"后面的格式不对于是报错。
于是按照URL的编码规则改成下面的样子,就可以了。
- conn = PQconnectdb("postgresql://postgres@[fe80::250:56ff:fe8d:6927%25eth0]:5432/postgres");