【问题标题】:sqlite3 module cannot open database when started from ubuntu upstart从 ubuntu upstart 启动时,sqlite3 模块无法打开数据库
【发布时间】:2015-05-13 12:40:44
【问题描述】:

在 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 脚本中永远盯着看,但我得到了同样的错误。

我通过解决方法解决了我的问题。不要永远使用并直接从新贵文件启动节点(允许重生)。没有问题。这似乎是 sqlite3 问题或永久问题。

【问题讨论】:

    标签: node.js ubuntu sqlite upstart forever


    【解决方案1】:

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

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

    var fs = require("fs");
    
    var exists = fs.existsSync(dbfilepath);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 2011-12-01
      • 2011-07-24
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多