数据库在 pgadmin 中可见,但对于其他程序不存在

Database visible in pgadmin but does not exist for other program

我使用以下代码在 postgresql 中创建了一个数据库。

Dim s1 As String
s1 = "Provider=MSDASQL;Driver={PostgreSQL ANSI};SERVER=localhost;DATABASE=postgres;UID=username;PWD=pwd;CONNSETTINGS=SET Datestyle TO 'DMY'%3b;BOOLSASCHAR=0;TEXTASLONGVARCHAR=1;TrueIsMinus1=1;"
Dim c1 As New ADODB.Connection

c1.Open s1


Dim sDB_Name  As String
sDB_Name = "db1"

s1 = "CREATE DATABASE "" " & sDB_Name & """"
s1 = s1 & " With OWNER = postgres  "
s1 = s1 & " TEMPLATE = template0 "
s1 = s1 & " ENCODING = 'WIN1252' "
s1 = s1 & " TABLESPACE = pg_default "
s1 = s1 & " LC_COLLATE = 'English_United States.1252' "
s1 = s1 & " LC_CTYPE = 'English_United States.1252' "
s1 = s1 & " CONNECTION LIMIT = -1; "
c1.Execute s1
MsgBox "done"
Unload Me

在使用 pgadmin 我可以看到这个新数据库并与之交互的情况下,它成功地工作了。

但是当我尝试从创建数据库的程序或其他程序通过 ADO 使用此数据库时,我收到消息:

Run-time error '-2147467259 (80004005)': FATAL: database "db1" does not exist

如果我使用 pgadmin 创建具有所有相同属性的相同数据库,那么我不会得到这个 消息并可以使用外部程序处理数据库。

有人可以解释一下我做错了什么吗? 谢谢。

我做错的是我创建了一个名为

的数据库

" db1"

而不是

"db1"

(名称中有前导 space)。

代码中的这一行是错误的:

s1 = "CREATE DATABASE "" " & sDB_Name & """" 

应该是

s1 = "CREATE DATABASE """ & sDB_Name & """"