> 백엔드 개발 > Golang > 내 Go 애플리케이션이 Ubuntu의 MongoDB Atlas에 연결할 수 없는 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 Go 애플리케이션이 Ubuntu의 MongoDB Atlas에 연결할 수 없는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-11-29 15:16:12
원래의
604명이 탐색했습니다.

Why Can't My Go Application Connect to MongoDB Atlas on Ubuntu, and How Can I Fix It?

Ubuntu에서 Go의 MongoDB 클라우드 데이터베이스에 연결

최근 개발자가 Go를 사용하여 MongoDB Atlas 데이터베이스에 연결을 시도하는 동안 문제가 발생했습니다. 우분투 시스템에서. 다음 코드 조각이 연결에 사용되었습니다.

func connectToDataBase() {
    ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
    defer cancel()
    client, err := mongo.Connect(ctx, options.Client().ApplyURI(dbURL))
    if err != nil {
        log.Fatal("Error connecting to Database: ", err.Error())
    }
    DB = client.Database("storyfactory")
}
로그인 후 복사

이 코드는 이전에 Windows 시스템에서 작동했지만 Ubuntu에서 실행하면 오류가 발생했습니다.

2019/04/13 00:20:37 Error connecting to Database: error parsing uri (mongodb+srv://User:[email protected]/test?retryWrites=true): lookup cluster0-gpxjk.gcp.mongodb.net on 127.0.0.53:53: cannot unmarshal DNS message
exit status 1
로그인 후 복사

해결 방법

"cannot unmarshal DNS message"라는 오류 메시지는 MongoDB Go 드라이버이지만 Go 버전 1.11.x에서 DNS 메시지가 처리되는 방식과 관련된 문제입니다. 특히 Go 1.11의 DNS 메시지 구문 분석 논리 업데이트에서는 RFC-2782를 더욱 엄격하게 준수하여 도메인 이름 압축을 사용하는 DNS 응답에서 오류가 발생했습니다.

해결 방법

이 문제를 해결하기 위해 개발자는 다음 해결 방법을 구현할 수 있습니다.

  • 비SRV MongoDB URI(예: SRV 레코드 대신 호스트 이름 사용)
  • /etc/resolv.conf의 내용을 업데이트하여 호환 또는 공용 DNS 서버(예: 1.1.1.1 또는 8.8.8.8)를 지정합니다.

또는 개발자는 최신 버전의 Go로 업그레이드하는 것을 고려할 수 있습니다. (예: 1.12 또는 1.13) 이 문제가 해결되었습니다.

위 내용은 내 Go 애플리케이션이 Ubuntu의 MongoDB Atlas에 연결할 수 없는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿