最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用zongji模块无法正常监听mysql更改事件

IT培训 admin 4浏览 0评论

使用zongji模块无法正常监听mysql更改事件

我正在尝试使用mysql-event模块在我的应用程序中监听mysql更改事件。为此,我知道,我需要确保zongji模块是否正常工作。

所以这是我到目前为止所尝试的:

--my server.js

                          var ZongJi = require('zongji');

                          var zongji = new ZongJi({
                            host     : 'db_host',
                            user     : 'root',
                            password : 'kakaun',
                            insecureAuth: true,
                            debug: true
                          });
                          zongji.start({
                            includeEvents: ['tablemap', 'writerows', 'updaterows', 'deleterows']
                          });
                          zongji.on('binlog', function(evt) {
                            console.log("+++++Inside binlog event++++");
                            evt.dump();
                          });
                          process.on('SIGINT', function() {
                            console.log('Got SIGINT.');
                            zongji.stop();
                            process.exit();
                          });

(来自.js的例子)

我已经完美配置了mysql的binlog,它也在创建日志。

但是我无法为我的节点应用程序中的任何更改事件记录上述控制台的任何内容。

当我打开debug = true选项时,我可以看到,对于数据库日志中的每个更改,我都会收到此调试日志:

<-- BinlogHeader
BinlogHeader {}

<-- BinlogHeader
BinlogHeader {}

<-- BinlogHeader
BinlogHeader {}

所以,这意味着我的应用程序能够成功地联系myslog的binlog,但我怎么知道哪一行已更改或更改了什么?因为zongzi.on('binlog',[Function])没有打印任何东西。

回答如下:

经过大量调试后,我发现了问题。所以这是我忽略并做错的事情。我想发布我的错误,以便其他用户可以避免这样做。

默认情况下,如果为mysql启用binlog,它将是基于事件的日志记录,zongji模块无法理解。 https://dev.mysql/doc/internals/en/binary-log-overview.html

因此,您需要启用基于行的日志记录,以获取有用的信息(以了解已更改的内容)。

可以使用mysql配置文件的myf文件中的这个额外语句启用基于行的日志记录:

binlog_format    = row

添加这个,并重新启动mysql服务器后,每件事情都开始正常工作。

使用zongji模块无法正常监听mysql更改事件

我正在尝试使用mysql-event模块在我的应用程序中监听mysql更改事件。为此,我知道,我需要确保zongji模块是否正常工作。

所以这是我到目前为止所尝试的:

--my server.js

                          var ZongJi = require('zongji');

                          var zongji = new ZongJi({
                            host     : 'db_host',
                            user     : 'root',
                            password : 'kakaun',
                            insecureAuth: true,
                            debug: true
                          });
                          zongji.start({
                            includeEvents: ['tablemap', 'writerows', 'updaterows', 'deleterows']
                          });
                          zongji.on('binlog', function(evt) {
                            console.log("+++++Inside binlog event++++");
                            evt.dump();
                          });
                          process.on('SIGINT', function() {
                            console.log('Got SIGINT.');
                            zongji.stop();
                            process.exit();
                          });

(来自.js的例子)

我已经完美配置了mysql的binlog,它也在创建日志。

但是我无法为我的节点应用程序中的任何更改事件记录上述控制台的任何内容。

当我打开debug = true选项时,我可以看到,对于数据库日志中的每个更改,我都会收到此调试日志:

<-- BinlogHeader
BinlogHeader {}

<-- BinlogHeader
BinlogHeader {}

<-- BinlogHeader
BinlogHeader {}

所以,这意味着我的应用程序能够成功地联系myslog的binlog,但我怎么知道哪一行已更改或更改了什么?因为zongzi.on('binlog',[Function])没有打印任何东西。

回答如下:

经过大量调试后,我发现了问题。所以这是我忽略并做错的事情。我想发布我的错误,以便其他用户可以避免这样做。

默认情况下,如果为mysql启用binlog,它将是基于事件的日志记录,zongji模块无法理解。 https://dev.mysql/doc/internals/en/binary-log-overview.html

因此,您需要启用基于行的日志记录,以获取有用的信息(以了解已更改的内容)。

可以使用mysql配置文件的myf文件中的这个额外语句启用基于行的日志记录:

binlog_format    = row

添加这个,并重新启动mysql服务器后,每件事情都开始正常工作。

发布评论

评论列表 (0)

  1. 暂无评论