Tag: node mysql

Node.JS再次运行Node-Msql查询,并停止node.js脚本

我需要重新运行一个node.js查询,以获取最新的条目。 这是我迄今为止所尝试的。 setTimeout(function() { connection.query('SELECT * FROM News ORDER BY Content DESC LIMIT 1', function(err, rows, fields){ var News = rows[0].Content; }, 2000); 我原以为这会起作用,当定时器到达0时再次运行查询,我知道2秒有点短,这只是为了testing的目的。 它是express.js Web服务器的所有部分,当我导航到页面时,它不会用最新的条目更新文本。 处理这个问题的最好方法是什么? 我必须重新启动脚本来获取最新的条目,我想要做到这一点不必重新启动脚本。

从node-mysql连接到Amazon RDS(MySQL)时出错

我试图使用“felixge / node-mysql”包从Lambda中托pipe的nodejs代码连接到我的Amazon RDS(MySQL)实例。 我需要帮助来找出我做错了什么。 我正在“连接ETIMEDOUT”错误。 我的代码托pipe在Lambda中,Lamda和RDS都是相同的帐户和区域。 我还将RDSFullAccess策略附加到IAMangular色。 RDS实例也可以从所有IP(没有白名单/黑名单的IP)访问。 同时,我能够从我的本地MySQL工作台连接相同的凭据。 这是我的代码: var connection = mysql.createConnection({ host : 'xxxxxxxx.crhmtrscnbgt.us-east-1.rds.amazonaws.com', user : 'my_user', password : 'my_passowrd', database : 'my_db', port : '3306', debug : true }); connection.connect(function(err) { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + connection.threadId); }); var query […]

nodejs的mysql内存泄漏大量的高频查询

TL; DR https://gist.github.com/anonymous/1e0faaa99b8bb4afe3749ff94e52c84f – 演示内存消耗意味着泄漏。 这是在我的代码或在MySQL包? 完整版 : 我在程序中看到很多内存泄漏(并且每隔几个小时最终会崩溃)。 该程序通过UDP套接字接收大量数据,将相关位存储在内存中的Hash中,并将数据每10秒钟一次写入Mysql DB(AWS RDS实例)。 node.js版本是6.9.4,在RHEL 7.1上运行 我试着用“–inspect”选项和Chrome devtools做一些分析,我最初的怀疑是mysql包。 为此,我做了一个简单的node.js程序,它只是对本地数据库进行了大量的查询,并发现它确实消耗了很多内存。 这里是程序: https : //gist.github.com/anonymous/1e0faaa99b8bb4afe3749ff94e52c84f 我尝试了一些程序的变化,他们都消耗内存的速度明显指向内存不足的崩溃。 变化是: 使用单个连接 使用30个连接池(这是生产设置) 使用有效的查询语句 使用导致parsing错误的无效查询语句(第27行中的string123之前的空格使其成为错误的查询。删除空格使得该查询是有效的) 这个上面的程序没有像内存中的数据库。 它只做一件事:以高频率向MySQL数据库发出大量的UPDATE查询。 我已经将频率设置为2秒来轻松演示内存消耗。 降低这个频率将减缓内存消耗,但是它将会增长。 它只会延迟崩溃,但崩溃本身是不可避免的。 频率的实际使用要求是10秒,每次运行的更新查询次数将达到10,000次。 所以示例程序中的数字非常接近真实世界的情况,不仅仅是一些假设的模拟数字。 这里是“–trace-gc”的输出,表示内存消耗在一分钟内升至400MB: [29766:0x36c5120] 52326 ms: Scavenge 324.9 (365.1) -> 314.7 (369.1) MB, 8.3 / 0.0 ms [allocation failure]. [29766:0x36c5120] 53292 ms: Scavenge […]

如何在mySQL池集群中使用nodeJS集群?

快速的问题 如果我使用4个工人(4个应用程序)创build节点集群应用程序,我应该使用mySQL池还是使用mysql池集群? 如果我使用池,它将为每个应用程序创build一个池,但如果使用池群集,则会为每个应用程序创build4个池(共16个池)。 这是一个很好的实现,还是会降低性能? 举一个假的例子来说明我在问什么。 我正在创build一个像这样的nodeJS服务器应用程序。 首先,让我们为mysql数据库创buildconfiguration文件(重要的是我创builddb worker的这个文件的最后一部分): DBconfig.js 'use strict' const mysql = require('mysql'), workers = process.env.WORKERS || require('os').cpus().length, cluster = require('cluster'); //Local Database Settings const local_settings = { user : 'user', host : '127.0.0.1', password : 'pass', database : 'dbname', debug : false, dateStrings: true, connectionLimit : 10, defaultSelector : 'RR', multipleStatements : […]

node-mysql无法处理多个查询?

我正在使用:node-mysql arrtickers大约有200个值。 arrtickersclosures将值传入sym。 sym将传递给每个函数的值(以asynchronous模式运行,每个函数将自己开始运行而不必等待前面的fn完成) 这里的问题是mysql似乎无法处理多个调用? events.js:48 throw arguments[1]; // Unhandled 'error' event ^ Error: reconnection attempt failed before connection was fully set up at Socket.<anonymous> (/home/ubuntu/node/node_modules/mysql/lib/client.js:67:28) at Socket.emit (events.js:64:17) at TCP.onread (net.js:398:51) arrtickers.forEach(function(value) { var sym= value; (function(sym) { url2= "http://test2.com/quote.ashx?t="+sym+"&ty=c&ta=1&p=d&b=1"; request({ uri:url2 }, function (error, response, body) { jsdom.env({ html: body, scripts: [ jqlib […]

具有MySQL连接的Nodejs集群

查看关于Nodejs集群的build议以及连接到mysql服务器的方法。 我们是否为每个subprocess打开一个连接,或者为所有进程打开一个连接? 或者我们为所有的subprocess创build一个连接池? 哪个是推荐的方法? 一个节点进程 var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'example.org', user : 'bob', password : 'secret' }); connection.connect(function(err) { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + connection.threadId); }); 节点集群选项1: var cluster = require('cluster'); var http = require('http'); var numCPUs = require('os').cpus().length; […]

在快速应用程序中处理MySQL数据库连接的模式

我正在使用Express 4.x,以及最新的MySQL节点包。 PHP应用程序(我最熟悉的)的模式是有一些数据库连接公用文件被包含在内,连接在脚本完成后自动closures。 在快速应用中实现时,可能看起来像这样: // includes and such // … var db = require('./lib/db'); app.use(db({ host: 'localhost', user: 'root', pass: '', dbname: 'testdb' })); app.get('/', function (req, res) { req.db.query('SELECT * FROM users', function (err, users) { res.render('home', { users: users }); }); }); 请原谅缺乏error handling,这是一个原始的例子。 在任何情况下,我的db()函数都会返回将连接到数据库并存储连接对象req.db ,从而有效地为每个请求提供一个新对象。 这个方法有几个问题: 这根本没有规模; 数据库连接(价格昂贵)将以相当便宜的请求进行线性扩展。 数据库连接不会自动closures,并会在未被捕获的错误涓stream的情况下终止应用程序。 你必须捕捉它并重新连接(感觉像一个反模式),或者编写更多的中间件,一切必须调用pior来输出,以确保连接closures(反DRY,可以说) 我见过的下一个模式是在应用程序启动时简单地打开一个连接。 var […]

我可以将SQL语句存储在节点js中的单独文件中吗?

我想将所有的SQL语句存储在一个单独的( .txt也许?)文件中。 这将使我的代码看起来干净,更具可读性。 例: router.get('/', function (req, res, next) { var sql = // get SQL from a file connection.query(sql, function (err, rows, fields) { var row; if (!err) { row = rows[0]; } res.render('index', { … }); }) }); PS我不想将SQL语句存储在.js文件中。 先谢谢你

build议使用node-mysql连接数据库

我正在尝试在节点中的现有连接中更改数据库。 createConnection调用中的连接可能具有或不具有数据库名称。 代码如下: var mysql = require('mysql'); connection = mysql.createConnection( { host : 'localhost', user : 'me', password : 'secret', port : 3306, /* database : 'test' // optional */ }); 我正在使用node-mysql lib。 目前我正在closures连接并重新连接。 有没有更好的方法来做到这一点? 类似于php中的mysql_select_db ?

MySQL节点JSasynchronous问题

我想我有一些asynchronous的问题,实现一个函数,使用节点js从mysql数据库中的表中获取所有行。 我正在使用node-mysql模块。 我已经GOOGLE了这个,并试图在这个问题上接受的答案说,但仍然没有运气。 它告诉我undefined is not a function throw err undefined is not a function 。 任何人都知道这里的问题是什么? var express = require('express'); var mysql = require('mysql'); var router = express.Router(); router.get('/people', function(req, res, next) { getAllPeople(function(err, people) { res.json(people); }); }); function getAllPeople(cb) { var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : […]