gpt4 book ai didi

c++ - SOCI C++(SQL 包装器) fatal error : database "testDB" does not exist

转载 作者:行者123 更新时间:2023-11-28 08:01:06 29 4
gpt4 key购买 nike

Soci 的另一个问题...我想连接我刚刚创建的 testDB,但下面的代码显示 fatal error 。

我这样做了:

在 PostgreSQL 上:

1) CREATE USER robert WITH ENCRYPTED PASSWORD 'pass'; 
2) CREATE DATABASE testDB;
3) GRANT ALL PRIVILEGES ON DATABASE testDB TO robert;

我的 C++ 代码:

#include <iostream>
#include <soci.h>
#include <string>
using std::string;
using std::cout;
#include <postgresql/soci-postgresql.h>

bool connectToDatabase(string databaseName, string user, string password)
{
try
{
soci::session sql(soci::postgresql, "dbname=" +databaseName + " user="+user + " password="+password);
}
catch (soci::postgresql_soci_error const & e)
{
std::cerr << "PostgreSQL error: " << e.sqlstate() << " " << e.what() << std::endl;
return false;
}
catch (std::exception const & e)
{
std::cerr << "Some other error: " << e.what() << std::endl;
return false;
}
return true;
}

int main(int argc, char **argv)
{
cout << connectToDatabase("testDB", "robert", "pass");

return 0;

}

编译后我得到了这个:

Some other error: Cannot establish connection to the database.
FATAL: database "testDB" does not exist

怎么了?

最佳答案

改为连接到数据库“testdb”。

PostgreSQL 中的大小写折叠通过将未加引号的标识符转换为小写来实现。因此 CREATE DATABASE testDB 创建了一个名为“testdb”的数据库,与 CREATE DATABASE “testDB” 形成对比。

(作为一般性建议:要么习惯使用全小写的标识符,可能在单词之间使用下划线,要么习惯一直引用标识符。前者对于 PostgreSQL 更自然,后者允许您尽管如此,请坚持您的约定。

关于c++ - SOCI C++(SQL 包装器) fatal error : database "testDB" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11454731/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com