QT QSqlDatabase open()函数因长数据库名称(数据库文件路径)而失败

QT QSqlDatabase open()函数因长数据库名称(数据库文件路径)而失败,qt,qsqldatabase,Qt,Qsqldatabase,QSQLRERROR(-1,“打开数据库时出错”,“无法打开数据库文件”),当我们尝试打开具有长数据库名称(不支持超过256字节)的QSQLDABASE时 我试图从数据库文件名中删除目录路径,并通过上述目录更改当前工作目录,现在文件名很小,但打开调用仍然失败 QString dbName = "/home/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc12

QSQLRERROR(-1,“打开数据库时出错”,“无法打开数据库文件”),当我们尝试打开具有长数据库名称(不支持超过256字节)的QSQLDABASE时

我试图从数据库文件名中删除目录路径,并通过上述目录更改当前工作目录,现在文件名很小,但打开调用仍然失败

QString dbName = "/home/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789test.db"
QFileInfo fi(dbName);
QDir d = fi.dir();
char buffer[4096];
char* cwd = getcwd(buffer, 4096);
chdir(d.canonicalPath().toStdString().c_str());
m_sqldb = QSqlDatabase::addDatabase("QSQLITE",connectionName)
m_sqldb.setDatabaseName(fi.fileName());
if(!m_sqldb.isOpen()) {
    ok = m_sqldb.open();
    if (ok) {
    //////
    }
    else {
        qDebug()<<dbName<<m_sqldb.lastError();
        }
}
QString数据库名="/home/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/abc123456789/ABC1234569/abc123456789/abc123456789/abc1234567893456789/abc123456789/abc123456789/abc123456789测试.db“
QFileInfo fi(数据库名称);
QDir d=fi.dir();
字符缓冲区[4096];
char*cwd=getcwd(缓冲区,4096);
chdir(d.canonicalPath().toStdString().c_str());
m_sqldb=QSqlDatabase::addDatabase(“QSQLITE”,connectionName)
m_sqldb.setDatabaseName(fi.fileName());
如果(!m_sqldb.isOpen()){
ok=m_sqldb.open();
如果(确定){
//////
}
否则{

qDebug()所以它与长数据库名无关?请进一步简化您的示例,请参阅。不,这只是因为长文件路径。在open调用中,它在内部使用带绝对路径的文件名。