将SQLite数据库模式更改为读写

use*_*482 84 sqlite

如何将SQLite数据库从只读更改为读写?

当我执行更新语句时,我总是得到:

SQL错误:尝试编写只读数据库

SQLite文件是文件系统上的可写文件.

Aar*_*lla 69

此错误消息可能有以下几种原因:

  • 有几个进程同时打开数据库(请参阅常见问题解答).

  • 有一个压缩和加密数据库的插件.它不允许修改DB.

  • 最后,另一个FAQ说:"确保包含数据库文件的目录对于执行CGI脚本的用户也是可写的." 我认为这是因为引擎需要在目录中创建更多文件.

  • 整个文件系统可能是只读的,例如在崩溃之后.

  • 在Unix系统上,另一个进程可以替换整个文件.

  • 我将我的出价放在第三个项目符号上 - 包含数据库文件的目录也应该是可写的,这样就可以创建锁定文件. (19认同)
  • 我可以添加到这个列表:数据库文件在使用过程中被替换。我宁愿不必解释导致这个结论的愚蠢之处。 (4认同)
  • 最后一个。我总是忘记 sudo :P (3认同)
  • 我的第一颗子弹:D (2认同)

Chr*_*row 7

(此错误消息通常具有误导性,通常是一般权限错误)

在 Windows 上

  • 如果您直接针对数据库发出 SQL,请确保用于运行 SQL 的任何应用程序都以管理员身份运行
  • 如果应用程序正在尝试更新,它用来访问数据库的帐户可能需要对包含数据库文件的文件夹的权限。例如,如果 IIS 正在访问数据库,则 IUSR 和 IIS_IUSRS 可能都需要适当的权限(您可以尝试通过暂时让这些帐户完全控制文件夹,检查是否有效,然后根据需要绑定权限来尝试此操作)

  • 我必须以管理员身份运行“DB Browser”。 (3认同)
  • 我在Windows 10上给了“所有人”“完全控制”,但它仍然不起作用。然而,正如 @EbenRoux 所说,您可能还需要以管理员身份运行“数据库浏览器”,这使它对我有用。 (3认同)

Adi*_*koe 7

为了分享我遇到的这个错误的个人经验,最终解决了这两个问题。可能不一定与您的问题有关,但看来这个错误非常普遍,可以归因于无数的事情。

  1. 数据库实例在另一个应用程序中打开。我的数据库似乎处于“锁定”状态,因此它转换为只读模式。我能够通过停止共享数据库的应用程序的第二个实例来追踪它。

  2. 目录树权限 - 请确保用户帐户不仅具有文件级别的权限,而且具有整个上层目录级别一直到 / 级别的权限。

谢谢


小智 6

当您的数据库已经被一个应用程序访问,而您正试图用另一个应用程序访问它时,通常会发生此错误。


小智 5

我通过将/ db dir上所有文件的所有者从根目录更改为我来解决此问题。

只需ls -l在该文件夹上执行操作(如果任何文件管理器拥有),root只需使用以下命令将其更改为您即可:sudo chown user file


小智 5

在win10系统崩溃后,尝试使用DB Browser打开db,但只读。只需删除日志文件即可。