首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带有FoundationDB文档层的MongoDB C驱动程序进行事务处理?

如何使用带有FoundationDB文档层的MongoDB C驱动程序进行事务处理?
EN

Stack Overflow用户
提问于 2019-07-31 02:35:56
回答 1查看 72关注 0票数 0

事务的mongoc文档使用会话。因此,我尝试在与会话关联的事务中插入文档。但是我得到了一个错误

代码语言:javascript
复制
[ 3666]:    ERROR:       mongoc: Failed to start session: Server does not support sessions

如何使用带有FoundationDB文档层的MongoDB C驱动程序进行事务处理?

我当前的代码是:

代码语言:javascript
复制
- (int)insertUser:(User *)user {
    mongoc_client_session_t *session;
    mongoc_session_opt_t *session_opts;
    mongoc_transaction_opt_t *default_txn_opts;
    mongoc_transaction_opt_t *txn_opts;
    mongoc_read_concern_t *read_concern;
    mongoc_write_concern_t *write_concern;
    bson_t *doc;
    bson_t *insert_opts;
    bson_error_t err;
    default_txn_opts = mongoc_transaction_opts_new();
    read_concern = mongoc_read_concern_new();
    mongoc_read_concern_set_level(read_concern, "snapshot");
    mongoc_transaction_opts_set_read_concern(default_txn_opts, read_concern);
    session_opts = mongoc_session_opts_new();
    mongoc_session_opts_set_default_transaction_opts(session_opts, default_txn_opts);
    session = mongoc_client_start_session(client, session_opts, &err);
    if (!session) {
        MONGOC_ERROR("Failed to start session: %s", err.message);
        return EXIT_FAILURE;
    }
    txn_opts = mongoc_transaction_opts_new();
    write_concern = mongoc_write_concern_new();
    mongoc_write_concern_set_wmajority(write_concern, 1000);  // write timeout
    mongoc_transaction_opts_set_write_concern(txn_opts, write_concern);
}
代码语言:javascript
复制
int insertUserTransaction(id param, mongoc_client_session_t *session, mongoc_transaction_opt_t *txn_opts, User *user, bson_error_t *err) {
    bool ret = mongoc_client_session_start_transaction(session, txn_opts, err);
    if (!ret) {
        MONGOC_ERROR("Failed to start transaction: %s", err->message);
        return EXIT_FAILURE;
    }
    // ...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-05 13:26:09

文档层目前还不支持事务。它过去通过一些不同于MongoDB构造的构造公开FoundationDB事务。但它们会被禁用一段时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57278097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档