LINUX.ORG.RU

Загрузка плагина MySQL в Qt

 , ,


0

1

Не получается подключить модуль MySQL. Программа запускается и вываливается с такой ошибкой (db.lastError())

QSqlError(-1, "Driver not loaded", "Driver not loaded")
Пробовал сделать так:
cd ~/QtSDK/QtSources/4.8.1/src/plugins/sqldrivers/mysql
qmake "INCLUDEPATH+=/usr/include/mysql LIBS+=-L/usr/lib/mysql -lmysqlclient_r"
make
su - c 'make install'
Все собирается, но драйвер все равно не загружается.
QT += sql
в .pro-файле есть.

Как его все-таки подключить?

P.S.
И вообще, меня не покидает ощущение, что я чего-то не понимаю.

Самое простое это не собирать его самому, а просто поставить из репов. Не заню какой у тебя дистриб, но например в ubuntu это sudo apt-get install libqt4-sql-mysql Если для винды то тоже можно взять готовый и запихнуть в папку с либами к компилятору.

byte_men
()
Ответ на: комментарий от panter_dsd
#include <QtSql>

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("test");
    db.setUserName("user");
    db.setHostName("localhost");
    db.setPassword("secret");

    if (!db.open()) {
        qDebug() << "Cannot open database:" << db.lastError();
        return false;
    }

    return true;
}
HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от byte_men

Я правильно понял что тебе драйвер, а не плагин нужен?

Да, правильно.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

ну еще надо (хотя может и не обязательно если порт по умолчанию) <code> db.setPort(); </code>

а так все верно, поставь драйвер как я писал выше

byte_men
()
Ответ на: комментарий от byte_men

ну еще надо (хотя может и не обязательно если порт по умолчанию)

db.setPort();

а так все верно, поставь драйвер как я писал выше

Не, не надо ничего было делать. Разобрался на свежую голову. Нужно было просто собранный мной из сорцов libqsqlmysql.so положить в ~/QtSDK/Desktop/Qt/4.8.1/gcc/plugins/sqldrivers/

P.S.
https://www.linux.org.ru/wiki/en/Lorcode

P.P.S.
https://www.linux.org.ru/forum/lor-source/6956920

HerrWeigel ★★★★
() автор топика
Последнее исправление: HerrWeigel (всего исправлений: 3)
Ответ на: комментарий от HerrWeigel

Можно ещё LD_LIBRARY_PATH устанавливать с путём к плагину - например, запуская скриптом

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/mysql"
Это так, к вопросу о распространении программы.

quiet_readonly ★★★★
()
Ответ на: комментарий от quiet_readonly

Имею ввиду запускать программу через такой скрипт, на 2 строчке разместив вызов программы "./app $@"

quiet_readonly ★★★★
()
Ответ на: комментарий от HerrWeigel

Зачем такие сложности если его можно просто из репов поставить. Ручная сборка не способствует нормальному функционированию системы...

byte_men
()
Ответ на: комментарий от byte_men

Зачем такие сложности если его можно просто из репов поставить. Ручная сборка не способствует нормальному функционированию системы...

Не нашел пакета для своего дистрибутива. А так я бы уже давно поставил. Когда искал решение перед тем, как здесь запостить, этот совет не раз на глаза попадался.

И почему ручная сборка не способствует нормальному функционированию системы? Я не сделал ничего, о чем не было бы написано в официальном руководстве.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

Очень странно что у тебя нет такого пакета в репах? что за дистриб интересно узнать? А про ручную сборку тут я в большей части имел виду не библиотеки, а пакеты. Всегда лучше что бы менеджер пакетов знал что установлено. Например для удаление/обновления. Или ситуация когда при установке другого пакета тот который ты собирал притянется в зависимостях и перезаменит твой при это что нибудь поломая.

byte_men
()
Ответ на: комментарий от byte_men

Очень странно что у тебя нет такого пакета в репах?

Нет, не странно.

что за дистриб интересно узнать?

Слака

Всегда лучше что бы менеджер пакетов знал что установлено. Например для удаление/обновления. Или ситуация когда при установке другого пакета тот который ты собирал притянется в зависимостях и перезаменит твой при это что нибудь поломая.

slapt-get и иже с ним не использую.

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от HerrWeigel

Ну раз Слака, то тебе думаю не привыкать разруливать зависимости.. ))) Кстати пишу проектик в связке Qt+mysql (qtcreator) правда все будет юзаться на оффтопике, по этому я там собираю и тестирую(на VM). Если что спрашивай вдруг помогу или кодом поделюсь.

byte_men
()
Ответ на: комментарий от byte_men

Ну раз Слака, то тебе думаю не привыкать разруливать зависимости..

Да это, в принципе, не проблема.

Кстати пишу проектик в связке Qt+mysql (qtcreator) правда все будет юзаться на оффтопике, по этому я там собираю и тестирую(на VM). Если что спрашивай вдруг помогу или кодом поделюсь.

Ок. А джаббер у тебя есть?

HerrWeigel ★★★★
() автор топика
Ответ на: комментарий от byte_men

А, если гмыло есть, то можешь в джаббере общаться. В качестве jabber-id нужно указать твой адрес гуглопочты; пароль указываешь от нее же. Vacuum-im у меня ругнулся на сертификат, я ему сказал не жужжать, он и подключился.

Мой jid в профиле, так что можешь стучаться :)

HerrWeigel ★★★★
() автор топика
Последнее исправление: HerrWeigel (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.