linux - 刷新页面时出现数据库被锁定的错误

标签 linux apache sqlite permissions mod-mono

我正在使用 mod mono 运行 apache,而我的 asp.net 应用程序使用 mono sqlite 作为其数据库。当我刷新页面两次时,我得到了 DB is locked 错误。它所在的文件夹是 chmod 777。webapp 正在创建 sqlite.db 和 sqlite.db-journal,但它似乎无法删除日志。当我加载一次页面时它也有问题。看来确实是权限问题。

我很困惑。我需要什么权限来设置这些?我尝试使用 777 预先创建文件,但没有成功。

-edit- 我没有找到解决方案,但我认为自从我计划将 mysql 用于我的 webapp 以来,我是多么愚蠢。所以我只是移植了代码,我不再有问题。

最佳答案

创建/删除文件时,目录权限很重要。

所以,如果你真的想要那个,你必须将包含目录的权限设置为 777。

示例:

$ ls -la
total 21
dr-xr-xr-x  2 me me  1024 May 22 19:19 .          #no write permissions to directory
drwxrwxrwt 21 root   root   19456 May 22 19:19 ..
-rwxrwxrwx  1 me me     0 May 22 19:19 abc        #all permissions to file abc
$ rm abc
rm: cannot remove `abc': Permission denied        #abc has 777, but deleting doesn't work
$ chmod 777 .                                     #change directoy's permissions
$ rm abc                                          #now removing works
$ ls                                              #file abc is gone

原因是,当您删除一个文件时,您实际上修改的是目录,而不是文件本身。

想想一个硬链接(hard link):当你删除一个指向它的硬链接(hard link)时,文件本身不会改变,但目录会改变。

关于linux - 刷新页面时出现数据库被锁定的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2889013/

相关文章:

android - 移植 Windows 线程以在 Android 操作系统上运行

c++ - 在 LINUX 中使用 C++ 显示包含在特定目录中的文件

c - 尝试附加共享内存的已用地址时出错

c# - SELECT语句中的C#SQLite参数-依赖组合框问题

java - Android SQLite,如何将Cursor变成字符串?

java - Android 测验应用程序与 SQLite 数据库随机选择

linux - 使用 awk 或 sed 获取两个单词之间的值

apache - MQTT over websocket over Apache SSL

linux - 在 apache 网络服务器上使用 tomcat for jsp,ubuntu

java - 无效距离太远