为什么我用soci连接postgresql时没有足够的权限访问数据库?
Why I have not enough privilege to database when I use soci to connect to postgresql?
我可以正确使用 soci 连接到 mysql 并执行 sql。但是用同样的方法postgresql 就不行了。这是我的 makefile 和 main.cpp:
all: main.cpp
g++ -Wall -g -o main main.cpp -lpq -lsoci_core -lsoci_postgresql -ldl
clean:
这是main.cpp:
#include <soci/soci.h>
#include <soci/postgresql/soci-postgresql.h>
#include<iostream>
#include<istream>
#include<ostream>
#include<string>
#include<exception>
using namespace std;
using namespace soci;
int main() {
try {
session sql("postgresql://dbname=mydb_0");
int count ;
sql<< "select count(*) from student", into(count);
cout<<"count="<<count<<endl;
} catch (exception const &e) {
cerr<<"Error:" <<e.what()<<endl;
}
}
这是错误输出:
Error:Cannot execute query. Fatal error. 错误: 对关系 student 权限不够
while executing "select count(*) from student".
我可以在终端中执行 sql "select count(*) from student"
但 C++ 代码不起作用,为什么?
好的,我已经自己解决了这个问题。与其他示例不同,我将 "host=127.0.0.1" 和 "port=5432" 添加到 init statement.It 是这样的:session sql(postgresql, "host=127.0.0.1 dbname=exampledb user=postgres password=123 port=5432");
。我希望这个解决方案能帮助其他人。
我可以正确使用 soci 连接到 mysql 并执行 sql。但是用同样的方法postgresql 就不行了。这是我的 makefile 和 main.cpp:
all: main.cpp
g++ -Wall -g -o main main.cpp -lpq -lsoci_core -lsoci_postgresql -ldl
clean:
这是main.cpp:
#include <soci/soci.h>
#include <soci/postgresql/soci-postgresql.h>
#include<iostream>
#include<istream>
#include<ostream>
#include<string>
#include<exception>
using namespace std;
using namespace soci;
int main() {
try {
session sql("postgresql://dbname=mydb_0");
int count ;
sql<< "select count(*) from student", into(count);
cout<<"count="<<count<<endl;
} catch (exception const &e) {
cerr<<"Error:" <<e.what()<<endl;
}
}
这是错误输出:
Error:Cannot execute query. Fatal error. 错误: 对关系 student 权限不够
while executing "select count(*) from student".
我可以在终端中执行 sql "select count(*) from student"
但 C++ 代码不起作用,为什么?
好的,我已经自己解决了这个问题。与其他示例不同,我将 "host=127.0.0.1" 和 "port=5432" 添加到 init statement.It 是这样的:session sql(postgresql, "host=127.0.0.1 dbname=exampledb user=postgres password=123 port=5432");
。我希望这个解决方案能帮助其他人。