为何无法通过其他语言连接PostgreSQL数据库?
问题描述
在CMD中操作PostgreSQL完全正常,可创建数据库、建立连接、创建表、插入及修改数据等。但用C#和Python操作数据库时,连接报错:database 'Biblioteca' does not exist
确认该数据库存在,且当连接语句中使用错误密码时:
NpgsqlConnection conn = new NpgsqlConnection("Server = localhost; " + "User Id= admin; Password = wrongpass; Database =Biblioteca");
会报错:
password authentication failed for user "admin"
说明程序能识别用户存在,但无法识别数据库,寻求解决办法。(Windows系统)
解决建议
- 检查数据库名称的准确性:在psql中执行
\l命令查看所有数据库的准确名称,确认是否存在大小写或拼写差异。PostgreSQL在Windows下默认将未加双引号的数据库名转为小写存储,若创建时用双引号指定了大小写(如CREATE DATABASE "Biblioteca";),则连接字符串中也需要用双引号包裹数据库名:Database="Biblioteca"。 - 清理连接字符串的多余空格:连接字符串中
Database =Biblioteca的等号两侧存在空格,部分驱动会将空格视为名称的一部分,建议修改为Database=Biblioteca,去掉等号两边的多余空格。 - 确认连接的PostgreSQL实例一致性:检查是否安装了多个PostgreSQL版本或实例,确保程序连接的端口与CMD中使用的一致(默认端口5432)。可在连接字符串中明确指定端口:
Server=localhost;Port=5432;...,同时在CMD中执行SELECT version();确认实例版本,与程序连接的实例匹配。 - 验证用户数据库权限:确保
admin用户拥有连接Biblioteca数据库的权限,在psql中执行以下命令赋予权限:GRANT CONNECT ON DATABASE Biblioteca TO admin;
内容的提问来源于stack exchange,提问作者Rodrigo Lopez
相关产品推荐
相关产品推荐

