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'
);
从 https://www.npmjs.com/package/mysql-events
获取代码当我尝试打印 console.log(mysqlEventWatcher); , 它打印出类似的东西
{ 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] }
编写此代码后,我更新了在 mysqlEventWatcher 中实现的特定表('myTable'),然后它不会转到该方法,因为我正在打印事件。
我不知道我错过了什么
我添加这个答案是因为它首先出现在 Google 上。希望这会对某人有所帮助。
我使用 XAMPP 作为我的服务器,为了让它正常工作,我编辑了
my.cnf
文件,可以在此处找到该文件:xampp\mysql\bin
,其中包含以下内容:
我启用了
log-bin=mysql-bin
的每个实例(通过删除 #
)并写入了 binlog_format=row
。
编辑:
服务器 ID = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = 行
确保您在 mysql 服务器上启用了 binlog,并且 binlog 格式为 ROW https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html
尝试删除“Active”并确保设置正确的数据库和表名称以运行第一个测试
var watcher =mysqlEventWatcher.add(
'your_database_name.your_table_name',
function (oldRow, newRow, event) {}
);
除了检查 @nguyendn 答案之外,请尝试独立运行 ZongJi 以检查其功能
var ZongJi = require('zongji');
var zongji = new ZongJi({
host : 'localhost',
user : 'user',
password : 'password',
debug: true
});
zongji.on('binlog', function(evt) {
evt.dump();
});
如果ZongJi不工作,mysql-event也将不工作。对我来说,ZongJi 只在本地主机上工作,而不是远程 IP
执行Mysql查询来更改db用户权限:
将 . 上的复制从属、复制客户端授予“root”@“localhost”; 将 SELECT ON . 授予 'root'@'localhost';
为我做了