PyQt错误:QSqlDatabasePrivate :: database:无法打开数据库

时间:2010-04-16 04:49:23

标签: qt sqlite pyqt

以下错误的原因是什么: QSqlDatabasePrivate :: database:无法打开数据库:无法打开数据库 文件错误打开数据库?

代码100%正确,当我重新安装Windows,Python和PyQt时出现此消息。

编辑:我在.db文件属性的文件夹中有“只读”标志。当我取消设置并再次打开文件夹属性时,它会保持灰色(半检查)。我在文件夹属性中取消设置“使用简单共享”标志,我有管理员权限,我的计算机上没有病毒,因为我可以看到。这个讨厌的问题也没有超级用户的解决方案。如何为此文件夹和文件设置sqlite的适当权限?

2 个答案:

答案 0 :(得分:1)

上述错误发生在:

  • Qt认为数据库有效,
  • 数据库未打开,AND
  • 无法打开数据库。

您可以从src / sql / kernel / qsqldatabase.cpp(从4.6.2开始)的以下代码中看到:

QSqlDatabase QSqlDatabasePrivate::database(const QString& name, bool open)
{
    const QConnectionDict *dict = dbDict();
    Q_ASSERT(dict);

    dict->lock.lockForRead();
    QSqlDatabase db = dict->value(name);
    dict->lock.unlock();
    if (db.isValid() && !db.isOpen() && open) {
        if (!db.open())
            qWarning() << "QSqlDatabasePrivate::database: unable to open database:" << db.lastError().text();                                                                                                                                

    }
    return db;
}

看起来它只是无法打开文件。可能由于权限,文件位置更改等原因而发生。

答案 1 :(得分:1)

此问题的另一个原因可能是路径的编码。在我的案例中使用unicode(name)解决了它。