1

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

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

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

4

2 回答 2

4

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

所以,如果你真的想要,你必须将包含目录的权限设置为 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

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

想想硬链接:当你删除一个硬链接时,文件本身不会改变,但目录会改变。

于 2010-05-22T17:19:39.670 回答
0

听起来更像是 apache 中的一个会话实例阻塞了另一个会话,即 db 文件以独占方式打开。尝试让数据库(模型)作为所有会话访问的单例(或类似)运行。

于 2010-05-22T17:19:38.097 回答