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

发布于 2024-08-29 02:29:18 字数 298 浏览 3 评论 0原文

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

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

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

What is the cause of following error:
QSqlDatabasePrivate::database: unable to open database: unable to open database
file Error opening database?

Code is 100% correct, this message appeared when I have reinstalled Windows, Python and PyQt.

EDIT: I have "read-only" flag in folder with .db file properties. It stays gray (half-checked) when I unset it and open folder properties again. I have unset "use simple sharing" flag in folder properties, I have administrator rights, there is no viruses on my computer as I can see. This nasty problem doesn't have a solution on Super User too. How to set proper permissions for sqlite for this folder and file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱给你人给你 2024-09-05 02:29:18

当以下情况发生时会出现上述错误:

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

您可以从 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;
}

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

The above error happens when:

  • Qt considers the database valid,
  • the database isn't open, AND
  • it is not able to open the database.

You can see from the following code in src/sql/kernel/qsqldatabase.cpp (as of 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;
}

It looks like it's just failing to open the file. It could happen because of permissions, file location change, etc.

被翻牌 2024-09-05 02:29:18

此问题的另一个原因可能是路径的编码。使用 unicode(name) 解决了我的情况。

Another reason for this problem might be the encoding of the path. Using unicode(name) solved it in my case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文