내일배움단 11일메이킹챌린지 13일차

·2021년 7월 31일
0

서버 에러 해결

로그인기능을 구현하고 로컬에선 잘 됐는데, 서버에 올리니까 로그인이나 회원가입하려고 할 때마다 에러가 떴다.

pymongo.errors.OperationFailure: Authentication failed., full error: {'ok': 0.0, 'errmsg': 'Authentication failed.', 'code': 18, 'codeName': 'AuthenticationFailed'}

위와 같은 에러메시지였다.
검색해봐도 잘 나오지 않았는데, 일단 pymongo관련 에러인 것만은 확실해보였다.
짚이는 게 있었다.
내가 로그인기능을 구현한다고 flask 로그인 구현한 소스코드를 가져다 썼는데,
기존 소스코드들은 pymongo 패키지를 import해서 mongodb를 다루고 있었던 반면
예제코드에서는 flask-pymongo 패키지를 import flask_pymongo 해서 쓰고 있었다.
별 생각없이 flask-pymongo패키지 추가 설치하고 그 코드 그대로 썼는데,
그래서 mongodb연결하는 부분이 2번 들어갔었다.

from pymongo import MongoClient
from flask_pymongo import PyMongo

app = Flask(__name__)

conn = MongoClient() #pymongo
db = conn.bdd #pymongo

app.config["MONGO_URI"] = "mongodb://localhost:27017/bdd" #flask_pymongo
mongo = PyMongo(app) #flask_pymongo

대충 이런 식이었다.
그리고 기존 mongoDB와 통신하는 부분은 다 conn 변수로 했는데,
저렇게 해놓고 로그인기능쪽만 mongo.db 어쩌고 하면서 그걸 썼다.
이게 로컬에선 문제가 없었는데, 서버에 올리니까 안 되어서, 위 코드에서 flask_pymongo를 import하지 않고 관련코드도 다 삭제하거나 기존 pymongo 패키지를 이용한 코드로 변경(거의 변경할 것도 없었다.)해주니까 잘 된다!

이 두개가 겹치는 문제가 아니라면, 서버측에 올렸을 때 "mongodb://localhost:27017/bdd" 이 부분을 서버에 맞게 변경해주었는데 그 부분에서 뭔가 실수가 있었을 것 같은데 "mongodb://id:pass@localhost:27017/bdd" 뭐 이런식으로 해줬는 데 안됐다. 혹시 두개의 패키지의 충돌 문제가 아니라면 저기서의 문법 오류일 가능성이 가장 높아보임. 정확한 이유는 모르겠지만 우선 해결!

profile
백엔드 개발자. 공동의 목표를 함께 이해한 상태에서 솔직하게 소통하며 일하는 게 가장 즐겁고 효율적이라고 믿는 사람.

0개의 댓글