2015-07-01 1 views
-1

Я разрабатываю приложение в QT 5.4, которое подключается к DB Postgre. При запуске приложения в режиме выпуска внутри QT Creator соединение работает нормально. Однако, когда я добавляю зависимости .exe и открываю его, я всегда получаю ошибку подключения. Я добавил QT5Sql.dll в каталог выпуска и все остальные необходимые зависимости в зависимости от хоста зависимостей.Созданный QT exe не может подключиться к базе данных PostrgreSQL

Может ли кто-нибудь сказать мне, что я делаю неправильно?

ui->setupUi(this); 
finishedGame = false; 
ui->detener->setVisible(false); 
ui->labelEnCurso->setVisible(false); 
db = QSqlDatabase::addDatabase("QPSQL"); 
db.setHostName("localhost"); 
db.setDatabaseName("MYDB"); 
db.setUserName("USER"); 
db.setPassword("PASS"); 
bool ok = db.open(); 
if(!ok){ 

    QMessageBox msgBox; 
    msgBox.setText("Connection ERROR"); 
    msgBox.exec(); 
} 

UPDATE

Я проверил EXE-файл с DebugView и это ошибка, я получаю:

[10876] QSqlDatabase: QPSQL driver not loaded 
[10876] QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 

У меня есть как libpq.dll и qsqlpsql.dll на мой релиз, однако по какой-то причине приложение не может загрузить соответствующие драйверы, хотя оно говорит, что оно доступно.

+1

У вас есть каталог 'sqldrivers' с соответствующим .dll для PostgreSQL? Его можно найти в каталоге 'plugins' вашей установки Qt. Вы также можете попробовать [DebugView] (https://technet.microsoft.com/en-us/library/bb896647.aspx), чтобы узнать, что случилось. – AdrianEddy

+0

Спасибо. Я уже добавил sqldrivers. Но я попробую DebugView out :) –

+0

Вы также можете установить переменную среды 'QT_DEBUG_PLUGINS = 1' и проверить вывод в DebugView – AdrianEddy

ответ

1

У меня это работает. На всякий случай кто-то сталкивается с той же проблемой. Я решил это, добавив все содержимое папки bin в каталог установки PostgreSQL в мою папку выпуска проекта QT.

Смежные вопросы