0
Я не могу понять, что я делаю неправильно здесь. Я использую Qt 5.7.1 и код выглядит следующим образом:QSqlDatabase не открывается
QString filePath = QCoreApplication::applicationDirPath();
QString dbPath = QDir(filePath).absoluteFilePath("../../../Database");
m_db = QSqlDatabase::addDatabase("QSQLITE", "user_connection");
m_db.setDatabaseName(dbPath + "/Sensor_Objects.db");
qDebug() << filePath << " & " << dbPath;
if (!m_db.open())
qDebug() << "Database Error: " + m_db.lastError().text();
else
{
qDebug() << "Database: connection ok";
createDatabase("Sensor_Objects");
m_db.close();
}
QDebug() печатает пути к директориям правильно и в то же m_db.open() завершается с ошибкой «Ошибка базы данных: из памяти Ошибка открытия базы данных ".
использовать отладчик. Установите точку останова на 'sqlite3_open',' sqlite3_open_v2' и т. Д. Убедитесь, что они вызываются с правильными аргументами. В Linux также может помочь использование 'strace' &' ltrace'. Кстати, ошибка может быть вне строк, которые вы показываете. –
Дело в том, что тот же код работал отлично, когда я использовал Qt 5.6. Это может быть проблема с драйвером 5.7? – user2522981
Вы уверены, что у вашей программы нет [неопределенного поведения] (https://en.wikipedia.org/wiki/Undefined_behavior) - возможно, в другом месте? И вы не показываете весь исходный код. –