当我使用soci连接到postgresql时,为什么我没有足够的数据库权限?

时间:2017-08-13 17:12:49

标签: c++ mysql postgresql soci

我可以正确使用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 ++代码不起作用,为什么?

1 个答案:

答案 0 :(得分:0)

好的,我自己解决了这个问题。与其他示例不同,我添加&#34; host = 127.0.0.1&#34;和&#34; port = 5432&#34;到init语句。它是这样的:session sql(postgresql, "host=127.0.0.1 dbname=exampledb user=postgres password=123 port=5432");。我希望这个解决方案可以帮助其他人。