以下错误的原因是什么: QSqlDatabasePrivate :: database:无法打开数据库:无法打开数据库 文件错误打开数据库?
代码100%正确,当我重新安装Windows,Python和PyQt时出现此消息。
编辑:我在.db文件属性的文件夹中有“只读”标志。当我取消设置并再次打开文件夹属性时,它会保持灰色(半检查)。我在文件夹属性中取消设置“使用简单共享”标志,我有管理员权限,我的计算机上没有病毒,因为我可以看到。这个讨厌的问题也没有超级用户的解决方案。如何为此文件夹和文件设置sqlite的适当权限?
答案 0 :(得分:1)
上述错误发生在:
您可以从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)
解决了它。