从ubuntu upstart启动时,sqlite3模块无法打开数据库

问题描述 投票:0回答:1

在Ubuntu服务器14.04中工作

我在/ etc / init中有一个upstart .conf文件来保存我的节点服务器。我一直在使用。这是我的脚本的样子

start on filesystem or runlevel [2345]
expect fork
setuid myUserId

env HOME=/home/myUserId/
env NODE_BIN_DIR=/usr/bin
env NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript

script
PATH=$NODE_BIN_DIR:$NODE_PATH:$PATH
echo $PATH
exec forever start -o /home/myUserId/nodeServ/lServer/logs/out.log /home/myUserId/nodeServ/lServer/server.js 1337
end script

但我一直收到这个错误

Error: SQLITE_CANTOPEN: unable to open database file
error: Forever detected script exited with code: 8

如果我从命令行运行脚本与在conf文件中完全一样,它可以正常工作。没问题。所以我认为这是一个权限问题。我已经在数据库目录和数据库上设置了读写执行权限,但仍然无法从文件中读取。

我尝试了很多不同的东西,我无法弄清楚为什么这是幸福的

更新:此问题似乎不是孤立的暴发户。我也试着永远盯着shell脚本,我也得到了同样的错误。

我通过解决方法解决了我的问题。不直接从upstart文件中使用forever和starting节点(允许respawn)。没有问题。这似乎是一个sqlite3问题或永远的问题。

node.js ubuntu sqlite upstart forever
1个回答
0
投票

在db文件目录中写入此命令sudo chown www-data. .

其他解决方案是检查文件是否存在ex:

var fs = require("fs");

var exists = fs.existsSync(dbfilepath);
© www.soinside.com 2019 - 2024. All rights reserved.