我试图删除db.sqlite文件,再次创建它,然后在同一个方法中插入一些信息,这就是我使用的方法:
public function destroy()
{
// Store all contents and delete the first one since this is created via seeder
$contents = $this->contents->all()->toArray();
array_shift($contents);
// Delete db file, creates it from an example file and changes permissions
system('rm -rf ../database/database.sqlite');
system('cp ../database/database.sqlite.example ../database/database.sqlite');
system('chmod 0777 ../database/');
system('chmod 0777 ../database/database.sqlite');
// Insert data
foreach ($contents as $content) {
$this->contents->create($content);
}
return response()->json(['message' => 'Data has been destroyed!']);
}
然而,当我尝试运行它时,我得到标题中描述的错误:
SQLSTATE[HY000]General Error: 8 attempt to write a readonly database
我对该文件和文件夹 给予了777权限,这是其他问题答案所推荐的,所以我不知道它为什么不是工作
答案 0 :(得分:7)
你需要继续推行
首先,将laravel目录的所有权更改为Web组
sudo chown -R :www-data /var/www/yourLarvelFolder
赋予存储目录特权,使其可写。
sudo chmod -R 775 /var/www/yourLarvelFolder/storage
答案 1 :(得分:1)
如果您使用带有Selinux记忆体的Fedora或Redhat来关闭Selinux(或正确配置):
setenforce 0
答案 2 :(得分:0)
最后,我通过使用不同的方法解决了这个问题,一种方法是删除数据库并再次创建(返回所有内容),然后第二种方法将所有内容插入新数据库。
答案 3 :(得分:0)
首先运行以下命令来检查apache2的用户。通常是www-data
ps aux | grep "apache2"
然后运行以下命令来解决您的问题。
chgrp -R www-data your_application_directory
chmod -R g+rw your_application_directory
答案 4 :(得分:0)
在ubuntu中授予在 18.04 和laravel 6
上工作的权限sudo chmod -R 775 database
sudo chown -R $(whoami) database