В настоящее время я работаю над обучением, выполняя проект, который должен использовать базу данных для сохранения данных. Я использую Qt C++, и я установил postgres.app.Попытка подключения к Postgres с Qt
Моя первая попытка написать метод соединения в основном взяты из этого источника (http://www.youtube.com/watch?v=3XE2bKUAxfw) и выглядит следующим образом после некоторых модификаций:
int database::connect(QString servername, QString dbname){
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setConnectOptions();
QString dsn = QString("Driver={PostgreSQL};Server=%1;Port=5432;Database=%2;").arg(servername).arg(dbname);
db.setDatabaseName(dsn);
if (db.open()){
qDebug() << "Opened";
return 1;
db.close();
} else {
qDebug() << "Error = " << db.lastError().text();
return -1;
}
}
Это первый метод дает ошибку: «не удалось подключиться к серверу : нет такого файла или каталога Является ли сервер работает локально и принимать соединений на Unix-сокет домена «/var/pgsql_socket/.s.PGSQL.5432» QPSQL: Невозможно подключиться»
После того как я не смог е ix эта проблема, я решил начать метод с нуля. Это то, что я придумал после некоторых интернет-исследований и чтения Qt документации:
int database::nconnect(QString servername, QString dbname){
QSqlDatabase db;
db = (QSqlDatabase::addDatabase("QPSQL"));
db.setHostName(servername);
db.setDatabaseName(dbname);
db.setUserName("janhettenkofer");
db.setPassword("testpw");
bool connectioncheck = db.open("janhettenkofer","testpw");
if (connectioncheck == true){
qDebug() << "Connection to database established." << endl;
} else {
qDebug() << "Error for database " << db.databaseName() << " :" << db.lastError().text() << endl;
}
return connectioncheck;
}
Этот метод вызывается ошибка «FATAL: паролю потерпело неудачу для потребителя„janhettenkofer“»
я избавился от другого установка PostgreSQL с помощью метода, описанного здесь: https://stackoverflow.com/a/20010057. Теперь я получаю эту ошибку со второй функцией (это не изменить первое сообщение об ошибке): «FATAL: база данных„MYDB“не существует QPSQL: Невозможно подключиться»
В потоке упомянутого выше другого способа исправление первой ошибки было предложено, но когда я открываю терминал и набираю «какой psql», ничего не происходит, даже не отображается сообщение «команда не найдена». И я не имею ни малейшего представления о том, как применять рекомендации относительно экспорта PATH. Google только говорит мне, что я должен сделать это, но не как. Терминал - это еще одна вещь, которую я только изучаю.
Благодарим вас за любые идеи или советы по использованию терминала заблаговременно.
EDIT:
Хорошо, я узнал, как добавить Psql в PATH. Теперь я могу запустить which psql
. Это указывает на установку Postgres.app, которую я использую. После этого я создал базу данных базы данных пользователей. Я могу подключиться к этой базе данных, используя либо Qt, либо терминал. Однако я не могу создать другую базу данных. Как я понимаю, вы делаете createdb mydb
, а затем CREATE DATABASE
. После этого \list
по-прежнему показывает только пользовательскую базу данных, базу данных postgres и template0 и template1. Нет mydb.
Если «какой psql» ничего не возвращает, psql не находится в вашей PATH. который не возвращает сообщение об ошибке, если ничего не найдено. Но да, сначала убедитесь, что вы можете подключиться к своей БД с правильными учетными данными, из командной строки или другого пользовательского интерфейса, прежде чем продолжить с Qt. –
Как вы установили PostgreSQL в вашу систему OS X? –
Спасибо @FrankOsterfeld, добавив psql в PATH, решили некоторые проблемы (см. Править). Я установил Postgres93.app. –