Tag: sqlite

NodeJS上下文问题

我遇到了问题,从Node.JS中的sqlite(sqlite3)库中写入套接字(使用http) https://gist.github.com/RyanCopley/6004c3ce372e060bbf18 第68至75行,我有4次尝试写。 在db.each之外,一切工作在任何情况下。 在它的内部,它崩溃悲惨。 我不完全确定为什么,但我觉得两个图书馆之间有冲突 BTW我已经知道连接SQL语句是不好的:3

node-sqlite3序列化失败:SQLITE_CONSTRAINT:外键约束失败

在Express.js中,我正在尝试使用两个查询的序列化,其中第二个依赖于第一个: 我正在尝试使用第一个查询来获取entryID 我为第二个查询使用该entryID 据我所知,第二个查询是在第一个查询完成之前调用的。 还有“console.log(”我的入口:“+ data.entryID);” 返回正确的entryID。 下面我显示了我正在使用的代码以及我得到的错误。 任何帮助,将不胜感激。 db.serialize(function(){ db.get("Select entryID from entry where pID=$pID",{$pID:participName},function(err, data){ if(err) throw err; foundID=data.entryID; console.log("My entry: "+data.entryID); }); db.run("insert into observation(entryID, objID, data) values($entryID,1,$intro_counter)", {$entryID:foundID, $intro_counter:intro_counter}); }); events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: SQLITE_CONSTRAINT: foreign key constraint failed

如何生存服务器重新启动与segelize postgres数据库和迁移

在我的快速应用程序中,我使用Sequelize来pipe理数据库。 这是我的引导代码。 db.sequelize .sync({ force: true}) .complete(function(err) { if (err) { throw err[0]; } else { //seed require('../db/seed')(db); app.listen(app.get('port'), function() { console.log('express listening on ' + app.get('port')); }); } }); 正如你所看到的,每次我首先启动服务器,我都用硬编码的数据为数据库播种。 这里是初始化sequelize的代码: if (process.env.NODE_ENV === 'test') { console.log('[test] using in memory database'); sequelize = new Sequelize('marbles-site-db', null, null, { dialect: 'sqlite', storage: ':memory:' }); } […]

使用ADM-ZIP(Node.js)将SQLite存储在内存数据库中

我试图使用sqlite3模块来创build一个内存的SQLite数据库和adm-zip模块来将其保存到一个zip文件。 到目前为止,我已经能够创build一个内存数据库并向其添加数据,但是我一直没有find一种方法将其存储在通过adm-zip制作adm-zip因为它需要文件,缓冲区或string。 我的问题是: sqlite3模块是否支持存储或保存为缓冲区? 如果不是的话,那么当脚本同时被用作一个可以被要求的模块和一个命令行脚本时,在Node.js中存储临时文件的一个明智的解决scheme是什么呢? 我已经包含了我用来testing下面的代码和一个可复制的要点。 main.js var fs = require('fs'), admzip = require('adm-zip'), sqlite3 = require('sqlite3').verbose(), zip = new admzip(), db = new sqlite3.Database('test.sqlite'); // db = new sqlite3.Database(':memory:'); db.serialize(function() { db.run('CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY, name TEXT);'); db.run('INSERT OR IGNORE INTO test(name) VALUES ("neogeek");'); }); zip.addFile('README.md', '#SQLite3 + ADM-ZIP […]

Nodejs – 如何杀死正在运行的SQLite查询

可能类似的问题: SQL:中断查询 有没有办法中止SQLite调用? 大家好,我实际上使用socket.io和sqlite3模块来执行SQLite数据库上的SELECT查询。 当用户点击一个OpenLayers地图,它发送一个信号给服务器(通过socket.io)来收集信息,通过执行空间请求(如交叉点,union …使用Spatialite扩展),然后最终发回数据到客户端(这些是长时间运行的查询(取决于几何graphics的数量)),以在用户点击的地图上显示一个popup窗口。 问题是:如果用户在地图上多次点击,发送很多请求到服务器,只有最后一个是重要的。 想象一下,如果一个查询需要5秒的时间来执行,并且用户在地图上每秒钟点击3次(他只想要点击的最后一个位置被使用),那么服务器将执行3个查询, 3信号通过socket.io(并打开3popup,我们只需要最后一个被打开)! 有没有任何解决scheme杀死/中止正在运行的sqlite查询与nodejs? 示例代码: socket.on('askForInfo', function (data) { sendInfo(socket, data.latitude, data.longitude); }); sendInfo定义: function sendInfo(socket, lat, lng) { // Database connection var db = new sqlite.Database('some file.sqlite', sqlite.OPEN_READONLY); // Load Spatialite extension db.loadExtension('mod_spatialite', function(err) { // Query doing spatial request db.get("VERY LONG SQL QUERY", function(err, row) { // […]

快递 – 为什么代码永远不会返回?

我是一个快递新秀,不明白:为什么下面的代码永远不会返回? 它似乎挂起。 router.post('/post',function(req,res){ var file = "test.db" var exists = fs.existsSync(file); if(!exists) { console.log("Creating DB file."); fs.openSync(file, "w"); } var sqlite3 = require("sqlite3").verbose(); var db = new sqlite3.Database(file); db.serialize(function() { if(!exists) { db.run("CREATE TABLE Stuff (thing TEXT)"); } var stmt = db.prepare("INSERT INTO Stuff(thing) VALUES (99999)"); stmt.finalize(); }); db.close(); }); //seems to hang at this […]

使用nodejs和sqlite获取BUSY错误

我正在寻找一些有关如何写这段代码的最好方法的见解。 我想要所有这些命令运行同步,所以我想使用db.serialize函数。 我需要根据查询的结果做一些其他数据库的东西(顺便说一下,我仍然是一个新手节点) 我第一次尝试这个 var db = new sqlite3.Database(file); var stmt = "SELECT image_id FROM image WHERE file_downloaded = 1 ORDER BY image_id DESC LIMIT 1"; db.serialize(function() { db.all(stmt, function(err, rows) { if (err){ if (err) { logger.error('Error %j', err); throw err; } } if ( rows.length > 0 ){ db.run("DELETE FROM image_status"); db.run("INSERT INTO […]

SQLite:SELECT和DELETE

我有一个在Raspberry Pi中的sqlite3数据库,我有一个脚本,它将数据发送到mongo数据库服务器。 只要我发送数据到mongoDB我想删除该行。 但我无法做到这一点,下面是代码 var sqlite3 = require('sqlite3').verbose(); var sqlDB = new sqlite3.Database('Table23.db'); var mongodb = require('mongodb'); var MongoClient = mongodb.MongoClient; var url = 'mongodb://192.168.0.87:27017'; var winston = require('winston'); var id_1; winston.remove(winston.transports.Console); winston.add( winston.transports.File, { filename: 'error.log', level: 'info', json: true, timestamp: true, handleException: true } ); sqlDB.serialize(function() { sqlDB.each("SELECT * FROM Table23", function(err, row) […]

Knex Js从原始SQL返回不同的输出

我有两张桌子。 一个是分类表,另一个是一个项目表,带有一个外键来分类(一个分类可以有多个项目) 我试图从下面的代码公开所有项目 router.route('/projects') .get(function(req,res){ //knex('projects').select(['projects.id','projects.name','projects.category_id','categories.name']).innerJoin('categories','projects.category_id','categories.id') knex.from('projects').innerJoin('categories','projects.category_id','categories.id') .then(function(collection){ console.log(collection); res.json({ error:false, data: collection }) }) .catch(function(err){ res.json({ error:true, data:{ message:err.message } }) }) }) 两个knex语句几乎都返回类似于下面的截断输出 { "error": false, "data": [ { "id": 1, "name": "Music", "category_id": 1, "created_at": 1458126413858 }, { "id": 2, "name": "Science", "category_id": 2, "created_at": 1458126413858 } ] } 但是,原始的SQL似乎是正确的 select * […]

尝试了解如何将callback合并到Node.js / SQLITE中

我对这一切都很陌生,并且正在努力弄清楚如何控制节点代码中的操作顺序。 当我加载页面,我的variables说'未定义',直到我刷新浏览器第二次。 我假设这是因为Jade / Pug页面正在呈现在数据库查询之前。 我读过的所有东西都表明我需要使用callback来控制顺序,但是我似乎无法得到它的工作。 这是我的预先屠杀的代码。 exports.count = function(req, res) { //Get in count db.all("SELECT COUNT(id) as cnt FROM tableName WHERE status='in'", function(err, rows){ inCount=rows[0].cnt; console.log("Items In: " + inCount); }); //Get out count db.all("SELECT COUNT(id) as cnt FROM tableName WHERE status='out'", function(err, rows){ outCount=rows[0].cnt; console.log("Items Out: " + outCount); }); //Render Count to […]