0
내 노드 응용 프로그램은 반환영원히 모니터링하고 sqlite3를
Error: SQLITE_CANTOPEN: unable to open database file
내 응용 프로그램의 구조는 다음과 같습니다
.controllers/
|--getter.js
|--setter.js
.system.js
.slave.js
System.js을
var forever = require('forever-monitor');
var path = require('path');
var relativeDir = path.dirname(module.filename);
var childWorker = new(forever.Monitor)(path.join(relativeDir,'slave.js'), {
max: 3,
silent: true,
options: []
});
slave.js
...
var getter = require('./controllers/getter.js');
var setter = require('./controllers/setter.js');
...
내가 상대 경로를 절대 경로로 변경하고 운 않고 데이터베이스의 소유자를 변경 시도했습니다
var fs = require('fs');
var sqlite3 = require('sqlite3').verbose();
var dbPath = '/ABSOLUTEPATH/db';
if (fs.existsSync(dbPath)) {
console.log("[Getter] DB file found");
var db = new sqlite3.Database(dbPath, sqlite3.OPEN_READONLY);
}
else {
console.log("[Getter] Cannot find DB file");
}
0
getter.js은/setter.js. 앱에서 데이터베이스 파일을 찾을 수는 있지만 어떤 이유로 열 수 없습니다.
그 후 간단한 "test.js"스크립트를 만들어 "system.js"라는 동일한 디렉토리에 두었습니다. 오류없이 작동하고 올바른 값을 반환했습니다.
var sqlite3 = require("sqlite3");
var dbPath = "/ABSOLUTEPATH/db";
var db = new sqlite3.Database(dbPath, sqlite3.OPEN_READONLY);
var sqlQuery = 'SELECT lat, long FROM kkk';
db.get(sqlQuery, function(err, row) {
if (err) {
console.log(err);
console.log('err!');
} else {
console.log(JSON.stringify(row));
}
});