1

まず、私は C++ を初めて使用します。現在、データベースの変更をリッスンしMySQL binlogて何かを行うプロジェクトを作成しようとしています。サンプル コードに従ってmysql-binlog-repliationというライブラリを選択しました。これで、でイベントを追跡しMySQL binlog、古い値と新しい値を取得できます。ただし、列を取得できません。値と一緒に列を取得する方法を知りたいです。有用な回答をいただければ幸いです。

以下は私のコードの一部です:

while (true) {
int result = binlog.wait_for_next_event(&event);
if (result == ERR_EOF)
  break;
std::cout << "Found event of type " << event->get_event_type();
int event_type = event->get_event_type();
if (event_type == mysql::TABLE_MAP_EVENT) {
  tmev = (mysql::Table_map_event *)event;
  std::string tablename=tmev->table_name;
}
if (event_type == mysql::WRITE_ROWS_EVENT || event_type==mysql::UPDATE_ROWS_EVENT || event_type==mysql::DELETE_ROWS_EVENT) {
  mysql::Row_event *row_event = (mysql::Row_event *)event;

  mysql::Row_event_set rows(row_event, tmev);
  mysql::Row_event_set::iterator itor = rows.begin();
  do {
    mysql::Row_of_fields fields = *itor;

    mysql::Row_of_fields::iterator it = fields.begin();
    // Here,fields represent values,I have no way to get columns
    do {
      std::string out;
      converter.to(out, *it);
      std::cout << "\t" << out;
    } while (++it != fields.end());
  } while (++itor != rows.end());
}
std::cout << std::endl;
4

0 に答える 0