LINUX.ORG.RU

QSqlError("", «Driver not loaded», «Driver not loaded»)

 ,


0

1

Все вроде делаю как обычно

QSqlDatabase sdb = QSqlDatabase::addDatabase("QSQLITE");
sdb.setDatabaseName("/home/farex/dev/task_reminders/task.db");
sdb.open();
    if(sdb.isOpen()){
        _query.prepare("INSERT INTO table_task (name, data, time, text) VALUES (:name, :data, time, text)");
        _query.bindValue(":name", name );
        _query.bindValue(":data", ui->calendarWidget->selectedDate().toString("dd.MM.yyyy"));
        _query.bindValue(":time", ui->timeEdit->time());
        _query.bindValue(":text", ui->textEdit->toPlainText());
        _query.exec();
        qDebug() << _query.lastError();
        sdb.close();
    }
Но получаю ошибку
QSqlQuery::prepare: database not open
QSqlError("", "Driver not loaded", "Driver not loaded")
Хотя вывод qDebug() << QSqlDatabase::drivers();
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
("QSQLITE", "QMYSQL", "QMYSQL3", "QPSQL", "QPSQL7")



Последнее исправление: farex (всего исправлений: 1)

А покажи strace, вангую, что он ищет свою *.so-шку, не находит и dlopen() обламывается.

PS Qt не знаю, этот пост на правах телепата.

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)

Какая версия Qt?

Сразу после QSqlDatabase::addDatabase() проверь базу с помощью метода isValid(), что он возвращает?

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

qDebug() << sdb.isValid();

true
QSqlQuery::prepare: database not open
farex
() автор топика
Ответ на: комментарий от farex

Это просто, запускаешь

strace youapplicationname
Получаешь вывод. Изучаешь его на предмет приватных данных, и заливаешь на какой-нибудь pastebin.

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

я правильно понимаю что если
open(«/home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/libqsqlite.so», O_RDONLY|O_CLOEXEC) = 13
Вывел больше нуля, то значит что сошка не открылась?

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

А как понять эти две строки

stat("/home/farex/dev/build-task_reminders-Desktop_Qt_5_7_0_GCC_64bit-Release/sqldrivers/.", 0x7fff0079d970) = -1 ENOENT (No such file or directory)
open("/home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/libqsqlite.so", O_RDONLY|O_CLOEXEC) = 13

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

Первая — проверка существования пути в билд-директории. Оно зафэйлилось, это значит, что ты вручную в билд-директорию не ложил SQL-драйвер. А вот второе нашлось и открывается.

Покажи вывод

ldd /home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/libqsqlite.so

anonymous00 ★★
()
Ответ на: комментарий от anonymous00
	linux-vdso.so.1 =>  (0x00007ffd365ad000)
	libQt5Sql.so.5 => /home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libQt5Sql.so.5 (0x00007fb842f84000)
	libQt5Core.so.5 => /home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libQt5Core.so.5 (0x00007fb842869000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb84262f000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb8422ad000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb841fa4000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb841d8d000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb8419c4000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb8417aa000)
	libicui18n.so.56 => /home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libicui18n.so.56 (0x00007fb84130f000)
	libicuuc.so.56 => /home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libicuuc.so.56 (0x00007fb840f57000)
	libicudata.so.56 => /home/farex/Qt/5.7/gcc_64/plugins/sqldrivers/../../lib/libicudata.so.56 (0x00007fb83f574000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb83f36f000)
	libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fb83f16d000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb83ef65000)
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fb83ec53000)
	/lib64/ld-linux-x86-64.so.2 (0x00005600911db000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fb83e9e3000)

farex
() автор топика
Ответ на: комментарий от annulen
farex@farex-dev:~$ sudo apt install libsqlite3-0
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Уже установлен пакет libsqlite3-0 самой новой версии (3.11.0-1ubuntu1).
farex
() автор топика

Проблема, скорее всего, в том, что кутя была собрана с плагином, использующим версию драйвера, отличную от той, что в системе.

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

Можно глянуть

$ ldd <директория  Qt>/5.6/gcc_64/plugins/sqldrivers/libqsqlite.so

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

Ты. Во всём ищешь сексуальный подтекст. На аватаре лишь потрет милой девушки, остальное — твоё извращённое воображение.

anonymous00 ★★
()

Лучше использовать ту версию, что идёт вместе с дистром. Или собрать самому.

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

Шайтанама, оказывается намедни sqllite обновился, вот и...

farex
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.