Javascript 为什么mysql事件在node.js中不起作用?
从 当我尝试打印console.log(mysqlEventWatcher), 它印的是这样的东西Javascript 为什么mysql事件在node.js中不起作用?,javascript,mysql,node.js,npm,mysql-event,Javascript,Mysql,Node.js,Npm,Mysql Event,从 当我尝试打印console.log(mysqlEventWatcher), 它印的是这样的东西 var MySQLEvents = require('mysql-events'); var dsn = { host: 'localhost', user: 'root', password: '' // no password set that's why keep blank }; var mysqlEventWatcher = MySQLEvents(dsn);
var MySQLEvents = require('mysql-events');
var dsn = {
host: 'localhost',
user: 'root',
password: '' // no password set that's why keep blank
};
var mysqlEventWatcher = MySQLEvents(dsn);
console.log(mysqlEventWatcher);
var watcher =mysqlEventWatcher.add(
'myDB.myTable',
function (oldRow, newRow, event) {
//row inserted
if (oldRow === null) {
//insert code goes here
}
//row deleted
if (newRow === null) {
//delete code goes here
}
//row updated
if (oldRow !== null && newRow !== null) {
//update code goes here
}
//detailed event information
console.log(event); // don't matter, it updates, delete or insert
},
'Active'
);
编写完这段代码后,我更新了我在mysqlEventWatcher中实现的特定表('myTable'),然后它就不会转到那个方法,因为我正在打印事件
我不知道我错过了什么
{ started: false,
zongji: {},
databases: [],
tables: {},
columns: {},
events: [ 'tablemap', 'writerows', 'updaterows', 'deleterows' ],
triggers: [],
dsn: { host: 'localhost', user: 'root', password: '' },
settings: {},
connect: [Function: connect],
add: [Function: add],
remove: [Function: remove],
stop: [Function: stop],
reload: [Function: reload],
includeSchema: [Function: includeSchema] }
除了检查@nguyendn answer外,请尝试运行ZongJi standalone以检查其功能
var watcher =mysqlEventWatcher.add(
'your_database_name.your_table_name',
function (oldRow, newRow, event) {}
);
如果ZongJi不工作,mysql事件也将不工作。对我来说,ZongJi只是在本地主机上工作,而不是在远程IP上工作。我之所以添加这个答案,是因为它首先出现在Google上。希望这能帮助一些人 我使用XAMPP作为我的服务器,为了让它正常工作,我编辑了
my.cnf
文件,可以在这里找到:XAMPP\mysql\bin
,如下所示:
我启用了log bin=mysql bin
(通过删除#
)的每个实例,并使用binlog\u format=row
编写
编辑:服务器id=1
log_bin=/var/log/mysql/mysql bin.log
binlog_format=row我遇到了相同的问题,binlog处于打开状态且为row格式,用户具有正确的权限,但用户没有响应callback@MichaelLWatson请确保将保留时间设置为非空。示例:mysql.rds\u set\u配置('binlog保留时间',24小时);顺便说一句:我正在使用mysq事件来监听我的主表上的更改,以便进行审计,它与远程ip配合得很好。@nguyendn您能解释一下如何启用“binlog”吗@GilEpshtain您可以在MySQL配置文件
server id=0 binlog format=ROW expire\u logs\u days=14 log bin=/var/lib/MySQL/bin log
中启用binlog,然后您可以通过运行此查询来检查状态显示类似“log\u bin”的变量(使用mysql cli)。这里有更多细节
var ZongJi = require('zongji');
var zongji = new ZongJi({
host : 'localhost',
user : 'user',
password : 'password',
debug: true
});
zongji.on('binlog', function(evt) {
evt.dump();
});