복붙노트

[MONGODB] 몽구스 (또는 MongoDB를)에서 TransientTransactionError은 무엇인가?

MONGODB

몽구스 (또는 MongoDB를)에서 TransientTransactionError은 무엇인가?

나는 server.js을 가지고 몽구스를 사용하여 내 데이터베이스와 함께 db.js 파일 상호 작용을 db.js 나는 db.js에서 함수를 호출하는 server.js를 사용 :

var mongoose = require('mongoose');
mongoose.connect('', { useNewUrlParser: true })
var Schema = mongoose.Schema;

module.exports = function () {
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    return db.once('open', function() {
        console.log("Connected to DB")
        var postschema = new Schema({
            title: String,
            intro: String,
            body: String,
            author: String,
            timestamp: { type: Date, default: Date.now }
        });

        var post = mongoose.model('post', postschema);

        return {
            newPost(title, intro, body, author) {
                var newpost = new post({
                    title: title,
                    intro: intro,
                    body: body,
                    author: author
                })
            },
            getPostsAll() {
                post.find({}, function (err, res) {
                    return (`Error:${err} Posts:${res}`)
                })
            }
        }
    })
}

그리고 내 server.js는 db.js에서 세 가지 함수를 호출 :

var DB = require('./db.js')
var db = DB()
db.getPostsAll()
db.newPost()

나는이 오류가 왜 이해가 안 :

connection error: { MongoNetworkError: connection 4 to black-test-shard-00-01-ewyaf.mongodb.net:27017 closed
at TLSSocket.<anonymous> (E:\HTML\black-box\node_modules\mongodb-core\lib\connection\connection.js:276:9)
at Object.onceWrapper (events.js:272:13)
at TLSSocket.emit (events.js:185:15)
at _handle.close (net.js:541:12)
at TCP.done [as _onclose] (_tls_wrap.js:379:7)
  name: 'MongoNetworkError',
  errorLabels: [ 'TransientTransactionError' ],
  [Symbol(mongoErrorContextSymbol)]: {} }

내가 무엇을 잘못하고 있지? 나는 기사를 찾았지만 아무것도 할 수 없습니다.

해결법

  1. ==============================

    1.TransientTransactionError 임시로 분류되는 트랜잭션 오류이며, 시도한다면 성공할 수 있습니다. 또한, TransientTransactionError 쓰기 충돌이 더 쓰기 잠금이 결과적으로 촬영되지 않은 트랜잭션 (새 데이터) 트랜잭션 스냅 샷 (이전 데이터를.)에 반영되지 않은 경우가 커밋 이전에 발생은 이러한 오류가 될 때까지 재 시도 완전히 안전이 이다 성공적으로 커밋.

    TransientTransactionError 임시로 분류되는 트랜잭션 오류이며, 시도한다면 성공할 수 있습니다. 또한, TransientTransactionError 쓰기 충돌이 더 쓰기 잠금이 결과적으로 촬영되지 않은 트랜잭션 (새 데이터) 트랜잭션 스냅 샷 (이전 데이터를.)에 반영되지 않은 경우가 커밋 이전에 발생은 이러한 오류가 될 때까지 재 시도 완전히 안전이 이다 성공적으로 커밋.

    이 시나리오에서 재 시도가 트랜잭션의 시작부터 시도되어 거래.

    이 오류 레이블이 잠금이 촬영되었습니다하지만 트랜잭션이 커밋 완료 할 수 없습니다 때 발생하는 오류를 저지 다른 알아 두셔야합니다. 이에 대한 오류 레이블 UnknownTransactionCommitResult입니다. 이에 대한 참조로 인해 응용 프로그램에서 오류가 발생하는 위치와 기본 원인이 될 수 무엇을 어떻게 응용 프로그램이 수 있고 또는 인해 다른 오류 유형에 응답 이해의 차이에 주목할 만하다.

    당신이 드라이버를 MongoDB를 지원 사용하는 경우 코드는이 오류를지고 두 가지 원인이 있습니다 :

    MongoDB의 거래에서 코드 예제 : 재시도 트랜잭션이 TransientTransactionError를 처리하는 방법을 맡았다 보여줍니다.

  2. ==============================

    2.내가했다

    내가했다

      'MongoNetworkError',
      errorLabels: [ 'TransientTransactionError' ],
      [Symbol(mongoErrorContextSymbol)]:
    

    나는 MongoDB의 웹 사이트에 "메인 페이지> 보안과> 네트워크 액세스> IP를 추가"다음 화이트리스트에 내 현재의 IP를 추가했다.

    이게 도움이 되길 바란다.

  3. ==============================

    3.나는 Windows 시스템이기는하지만, 동일한 문제 / 오류가 발생했습니다. 나는 내가 MongoDB의 서비스를 시작했다고 생각하더라도, 나는 Windows 서비스에서 실행을 보지 못했다. 그래서, 수동으로 서비스 내부 MongoDB의 서비스를 시작하고 오류 멀리 갔다. 희망이 도움이!

    나는 Windows 시스템이기는하지만, 동일한 문제 / 오류가 발생했습니다. 나는 내가 MongoDB의 서비스를 시작했다고 생각하더라도, 나는 Windows 서비스에서 실행을 보지 못했다. 그래서, 수동으로 서비스 내부 MongoDB의 서비스를 시작하고 오류 멀리 갔다. 희망이 도움이!

  4. ==============================

    4.거기에는 보안 문제없고 경우에 당신은 단지 연결을하고 있습니다 : 는 IP 허용 목록을 설정하는 동안; 형식은 0.0.0.0/0을해야합니다, 당신은 문제에 직면하지 않을 것이다.

    거기에는 보안 문제없고 경우에 당신은 단지 연결을하고 있습니다 : 는 IP 허용 목록을 설정하는 동안; 형식은 0.0.0.0/0을해야합니다, 당신은 문제에 직면하지 않을 것이다.

    당신이 자신을 대답 한 더욱이, 우리는 우리가 액세스해야 할 IP를 추가 할 수 있습니다.

  5. ==============================

    5.익스프레스 / NodeJS에 대한 MDN 튜토리얼에서 populatedb.js 스크립트를 실행할 때이 오류가 발생했습니다.

    익스프레스 / NodeJS에 대한 MDN 튜토리얼에서 populatedb.js 스크립트를 실행할 때이 오류가 발생했습니다.

    이 스크립트는 MongoDB를 시작하는 DB 연결을 찾고 있었다 : //, MongoDB를 + SRV 시작 몽고에서 그러나 내 연결 문자열 : //을.

    나는 오류를 해결하는 대신이 구문을 확인하기 위해 스크립트를 편집했다.

    나는이 사람을 도움이되기를 바랍니다.

  6. ==============================

    6.나는 비슷한 문제가 있었다 ... 하루 종일 나는 몽구스를 통해 연결할 수 있었다. 그럼 난 'TransientTransactionError'오류를 받기 시작 쾅. 나는 서버가 예상대로 실행 알고 있었다, 그래서 나는 쉘을 통해 MongoDB를 연결할 수 있습니다.

    나는 비슷한 문제가 있었다 ... 하루 종일 나는 몽구스를 통해 연결할 수 있었다. 그럼 난 'TransientTransactionError'오류를 받기 시작 쾅. 나는 서버가 예상대로 실행 알고 있었다, 그래서 나는 쉘을 통해 MongoDB를 연결할 수 있습니다.

    의 IPv6 / 로컬 호스트. 내 IP는 IPv4에서 IPv6로 전환했다. 나는 일반 IPv4의 IP에서 IPv6을 사용하지 않도록 설정하고 점점하여 문제를 해결.

    편집 - 내 NIC가 IPv6의 IP로 구성되는 동안 '로컬 호스트'에 연결하여이 문제를 생성 / 다시 안정적으로 할 수 있습니다 보인다. localhost- 변경> 127.0.0.1이 문제를 해결하기 위해 보인다.

  7. ==============================

    7.내 휴대 전화의 핫스팟에 내 와이파이 네트워크로 전환 할 때마다 저를 위해, 과도 트랜잭션 오류가왔다. 이 역시 당신에게 발생하면 다시 데이터베이스 및 화이트리스트 현재의 IP 주소를 만든 MongoDB를 웹 사이트로 이동합니다. 이 문제를 해결합니다.

    내 휴대 전화의 핫스팟에 내 와이파이 네트워크로 전환 할 때마다 저를 위해, 과도 트랜잭션 오류가왔다. 이 역시 당신에게 발생하면 다시 데이터베이스 및 화이트리스트 현재의 IP 주소를 만든 MongoDB를 웹 사이트로 이동합니다. 이 문제를 해결합니다.

  8. ==============================

    8.이 오류가 계속있는 경우, 또 다른 이유는 설정 파일을 변경 한 후 nodemon 서버를 다시 시작하는 것을 잊었다입니다. CTRL + C 다시 시작, 그건 내가 그것을 해결 방법은 다음과 같습니다.

    이 오류가 계속있는 경우, 또 다른 이유는 설정 파일을 변경 한 후 nodemon 서버를 다시 시작하는 것을 잊었다입니다. CTRL + C 다시 시작, 그건 내가 그것을 해결 방법은 다음과 같습니다.

  9. ==============================

    9.MLAB 사용 - 클러스터가 생성되면, 당신은 (사용자 탭) 데이터베이스 사용자를 추가하고 만들기를 클릭하지 있는지 확인에 확인 읽기 전용 확인란을해야합니다. 내가 이런 짓을하면, 오류가 멀리 갔다. 나는 위와 같은 오류를 얻고 있었다. 데이터베이스 사용자가 로그인 사용자 이름과 암호가 될 수 있습니다.

    MLAB 사용 - 클러스터가 생성되면, 당신은 (사용자 탭) 데이터베이스 사용자를 추가하고 만들기를 클릭하지 있는지 확인에 확인 읽기 전용 확인란을해야합니다. 내가 이런 짓을하면, 오류가 멀리 갔다. 나는 위와 같은 오류를 얻고 있었다. 데이터베이스 사용자가 로그인 사용자 이름과 암호가 될 수 있습니다.

  10. ==============================

    10.당신의 MongoDB를 아틀라스 대시 보드로 이동합니다. 네트워크 액세스를 클릭하면 모든 IP 주소에서 연결을 추가 IP 주소를 클릭 할 수 있습니다. 이 문제를 해결해야한다.

    당신의 MongoDB를 아틀라스 대시 보드로 이동합니다. 네트워크 액세스를 클릭하면 모든 IP 주소에서 연결을 추가 IP 주소를 클릭 할 수 있습니다. 이 문제를 해결해야한다.

  11. ==============================

    11.지금 당신이 완료됩니다.

    지금 당신이 완료됩니다.

  12. ==============================

    12.MongoDB를 아틀라스 데이터베이스에 내 Heroku가 응용 프로그램을 연결하려고 할 때 나는이 문제를 가지고 있었다.

    MongoDB를 아틀라스 데이터베이스에 내 Heroku가 응용 프로그램을 연결하려고 할 때 나는이 문제를 가지고 있었다.

    당신은 당신 터미널에서 할 경우

    Heroku가 로그 --tail

    당신은 볼 수 있습니다

    ERROR: { MongoNetworkError: 
    connection 4 to cluster0-shard-40-01-qnwp8.mongodb.net:27017 closed
    name: 'MongoNetworkError',
    errorLabels: [ 'TransientTransactionError' ],
    [Symbol(mongoErrorContextSymbol)]: {} }`
    

    MongoDB를 아틀라스의 서버 연결을 허용 목록에 후, 데이터베이스 연결 오류가 해결되었습니다.

  13. ==============================

    13.당신이 MongoDB의 아틀라스를 사용하는 경우. 당신은 보안 설정에서 허용 목록에 아틀라스 콘솔에 IP 주소가 필요합니다.

    당신이 MongoDB의 아틀라스를 사용하는 경우. 당신은 보안 설정에서 허용 목록에 아틀라스 콘솔에 IP 주소가 필요합니다.

  14. ==============================

    14.보안> 네트워크 액세스>> IP 주소 추가 현재 컴퓨터 IP 주소를 추가합니다. 내 문제를 해결.

    보안> 네트워크 액세스>> IP 주소 추가 현재 컴퓨터 IP 주소를 추가합니다. 내 문제를 해결.

  15. ==============================

    15.당신은 온라인 오류에 대해 읽을 수 있지만이 문제에 대한 해결책은 다음과 같습니다 이동을 당신에게 MongoDB를지도 책을 당신의 IP 주소를 추가합니다. 그것은 잘 작동합니다.

    당신은 온라인 오류에 대해 읽을 수 있지만이 문제에 대한 해결책은 다음과 같습니다 이동을 당신에게 MongoDB를지도 책을 당신의 IP 주소를 추가합니다. 그것은 잘 작동합니다.

  16. from https://stackoverflow.com/questions/52153538/what-is-a-transienttransactionerror-in-mongoose-or-mongodb by cc-by-sa and MIT license