2017-06-05 1 views
2
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' 
); 

Nehmen Code von https://www.npmjs.com/package/mysql-eventsWarum funktioniert mysql-event nicht in node.js?

Wenn ich versuche, console.log zu drucken (mysqlEventWatcher); , druckt es etwas wie das

{ 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] } 

Nach diesen Code zu schreiben, habe ich bestimmte Tabelle (‚myTable‘) aktualisieren, in dem ich in mysqlEventWatcher implementieren, dann wird es nicht zu dieser Methode gehen, wie im Inneren, dass ich Druck bin Veranstaltung.

Ich weiß nicht, was, was ich

Antwort

0
  1. Stellen Sie sicher, dass auf Ihrem MySQL-Server und das binlog Format ist ROW https://dev.mysql.com/doc/refman/5.7/en/replication-options-binary-log.html

  2. Try ‚Aktiv zu entfernen aktiviert binlog bin fehlt und stellen Sie sicher, dass Sie den korrekten Datenbank- und Tabellennamen für die Ausführung des ersten Tests einstellen.

+0

ich das gleiche Problem auftritt, binlog eingeschaltet und Im Zeilenformat hat der Benutzer die richtigen Berechtigungen, aber keine Antwort vom Rückruf –

+1

@MichaelLWatson Stellen Sie sicher, dass Sie die Aufbewahrungszeiten nicht auf null setzen. Beispiel: mysql.rds_set_configuration ('binlog retention hours', 24); BTW: Ich benutze mysq-Ereignisse, um die Änderung auf meine Haupttabellen für Audit-Zwecke zu hören, und es funktioniert gut mit Remote-IP. – nguyendn

0

Neben @nguyendn Antwort als Kontrolle, bitte versuchen Sie es und ZongJi Standalone zu überprüfen, es funktioniert

var ZongJi = require('zongji'); 
var zongji = new ZongJi({ 
    host  : 'localhost', 
    user  : 'user', 
    password : 'password', 
    debug: true 
}); 

zongji.on('binlog', function(evt) { 
    evt.dump(); 
}); 

Wenn ZongJi nicht funktioniert, mysql-Ereignis wird nicht funktionieren laufen. Für mich ZongJi arbeitete nur auf localhost, nicht remote IP

0

Ich füge diese Antwort, weil dies zuerst auf Google erscheint. Hoffentlich wird das jemandem helfen.

ich XAMPP als meinen Server und damit bin mit ihm zur Arbeit zu kommen, Ich habe die my.cnf-Datei, die hier gefunden werden kann: xampp\mysql\bin, mit dem folgend:

aktivierte ich jede Instanz von log-bin=mysql-bin (durch Entfernen der #) und ich schrieb in binlog_format=row.

EDIT:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = Zeile