MongoDB를 사용할 때 연결을 도와주는 몽구스 사용시 오류

 

// MongoDB 연결
const mongoose = require('mongoose')
mongoose.connect('mongodb+srv://<connect설정된유저명>:<connect설정된비번>@boilerplate.2c9y9.mongodb.net/?retryWrites=true&w=majority', {
  useNewUrlParser: true, 
  useUnifiedTopology: true, 
  useCreateIndex: true, 
  useFindAndModify: false
}).then(() => console.log('MongoDB Connected..'))
  .catch(err => console.log(err))

보통 위의 방식으로 연결을 한다.

 

이때 만약 몽구스 버전이 6.0이상이라면 MongoParseError: options usecreateindex, usefindandmodify are not supported에러가 발생 할 것이다!


이유는 Stack overflow를 보면 나와있지만 몽구스 버전이 6.0이상이라면 몽구스는 항상 useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false, 로 기억하고 실행하기 때문에 더이상 지원하지 않는다.

 

때문에 위의 코드는 아래와 같이 지우거나 주석을 걸어 실행 시켜주면 된다.

// MongoDB 연결
const mongoose = require('mongoose')
mongoose.connect('mongodb+srv://<connect설정된유저명>:<connect설정된비번>@boilerplate.2c9y9.mongodb.net/?retryWrites=true&w=majority', {
  // useNewUrlParser: true, 
  // useUnifiedTopology: true, 
  // useCreateIndex: true, 
  // useFindAndModify: false
}).then(() => console.log('MongoDB Connected..'))
  .catch(err => console.log(err))

0. MySQL과 ORACLE 의 와일드 카드 사용 쿼리는 조금 다르다.

MySQL 같은 경우 ORACLE처럼 쿼리를 질의 해도 조회가 된다.

 

 

1. _(언더바) 기호 사용 시 _(언더바) 기호가 1개 있을경우 검색어 뒤에 1개가 더 있는 것들에 대한 조건이다.

 

2. _(언더바) 기호가 2개 붙게 되면 당연히 검색어 뒤에 2개가 더 있는 것들이 조회가 된다.

 

 

워크벤치 실행을 하면 루트 계정으로 접속 가능한 커넥션이 보인다.

루트 계정을 누르고 접속 한다.

 

왼쪽의 Administration 탭을 클릭 해보면 Users and Privileges 메뉴가 있는데 클릭 해보면 DB 설치할때 만든 계정이 보인다.

 

Schemas 탭을 눌러 보면 스키마가 나오는데, 스키마의 원래 의미는 구조(Structure)라는 뜻이다.

테이블 스키마 라고 하면 시스템 하나 하나를 스키마 라고 부른다.

우클릭 해서 Create Schema를 실행 하자.

Collation은 정렬 기준을 뜻한다.

문자 정렬이 공백이나 특수문자 이런것들 위치가 미묘하게 다르다.

null값이 앞에 나오게 할 것인지 뒤에 나오게 할 것인지 이런 정렬 방식들을 결정 한다.

 

Apply 눌러보면 이런 창이 나오는데 우리가 좀전에 GUI를 사용해서 만든 것이 이러한 명령으로 실행 된다고 보여준다.
Finishi를 누르면 왼쪽에 스키마가 생성된다.
이제 테이블을 생성 해보자.

TableName, Charset, Collation을 지정해주고 테이블 컬럼을 생성해준뒤 Apply 실행.

이렇게 테이블이 생성 된다.

이제 다시 Administration 탭으로 가서 우리가 만든 사용자 계정에 좀전에 만든 DB를 사용할 권한을 지정해 줘야 한다.

사진에 보이는 우측 Add Entry를 클릭.

사용할 스키마를 지정해준다.

Select All을 클릭해서 모든 권한을 부여 해주고 Apply 클릭.

Connection Name, Default Schema를 지정하고 Test Connection을 실행해서 Success 메시지가 나오면 연결이 잘 된 것이다.

새로운 커넥션이 생성 되었다.
쿼리문을 실행 해보자.

컨트롤 엔터 치면 한 문장이 실행 된다. (커서 있는 번개모양 실행)

커서 없는 번개모양은 전체 쿼리 실행이다.

쿼리문을 쉽게 생성 할 수도 있다.

 

Edit -> Preferences -> SQL Editor 메뉴로 이동 해보면

맨 아래에 Safe Updates 항목을 체크 해제 해주면 delete, update 문 실행 시 where절이 없을때 알림 창이 뜨는것을 없앨 수 있다.

 

Query -> Auto-Commit Transactrions 항목을 체크 해제 해주면 자동으로 문장이 커밋 되는 것을 막을 수 있다.

 

쿼리문 실행 뒤에 체크를 눌러주면 Commit이 되고, X를 눌러주면 Commit 된 것이 이전 Commit 상태로 Rollback이 된다.

 

'Database > MySQL' 카테고리의 다른 글

[MySQL] MySQL 워크벤치 설치 하기  (0) 2022.04.04

1. https://dev.mysql.com/downloads/ 사이트로 이동

MySQL도 상용버전과 무료버전이 있는데 Community가 붙은 것들은 무료 버전이다.

이 중&nbsp; MySQL Community Server 를 설치할 것이다.

 

설치 방법은 여러 가지가 있지만 Installer를 사용해서 설치 하는 것이 편리 하다.

예전 버전을 사용 하고 싶으면 Archives 탭을 누르면 된다.

참고로 Intel, Mac에서 5.7버전이 설치가 잘 안되는 문제가 있다.

그리고 애플의 m1 칩도 지원 하지 않는 문제가 있다.

 

64bit 사용자도 32-bit를 받아도 된다.

용량이 작은 것은 최소한의 용량을 다운 받은 이후 설치 과정에서 인터넷으로 다운 받는 것이다.

그냥 처음 부터 용량이 큰 아래 것을 다운 받자.

 

로그인 할 필요 없이 바로 Nothanks, just start my download 클릭.

 

Database를 설치할때 어떤 타입으로 설치할 것인지를 선택 하는 화면 이다.

Developer Default로 선택 하고 Next.

 

MySQL을 설치하는데 필요한 프로그램들의 목록을 보여주는 화면이다.

사람들 마다 설치된 프로그램이 달라서 목록은 다를 수 있다.

 

목록에 Mysql server 같은 것들이 나올 경우 체크하고 Excute 버튼을 눌러주자.

MySQL Visual Studio나 Connector//Python 같은 것들은 필요가 없어서 그냥 다음으로 넘어가자.

그냥 Next를 누를 경우 다음과 같이 설치 안한게 있어서 알림창이 뜬다.

그냥 Yes 눌러주자.

 

목록에 있는 것들이 설치가 되는데 전부 Excute를 눌러서 설치 해주자.

우측 Notes 항목에 Try again 버튼이 생기면 눌러주면 다시 이어서 다운이 된다.

Server는 MySQL Database 그 자체이다.

Workbench는 명령 내리거나 테이블 생성 삭제 같은 작업 시 편하게 도와주는 도구이다.

Shell은 도스창 명령 도구이다.

Router는 Database가 다중화 될 때 사용하는 거라고 보면 된다. (Local 환경에선 필요 없다.)

Connector들은 프로그램에서 DB에 연결할때 사용 하는 드라이버인데 Java의 경우는 Connector/J 를 사용 한다.

 

이전 화면은 다운로드 였고, 이 화면은 Excute를 누르면 진짜로 설치가 진행 된다.

설치는 시간이 좀 걸린다.

 

여긴 그냥 넘어가 주면 된다.

TCP/IP 프로토콜을 이용해서 DB에 연결할 것이고, Port는 기본적으로 3306을 사용 한다.

 

MySQL 8부터 추가된 화면이다.

위에 체크된 것은 암호화된 비밀번호를 이용해서 인증 하는걸 사용한다는 뜻이다.

아래는 예전 MySQL 5점대 호환되는 인증 방식을 사용 한다는 뜻이다.

위에 것으로 체크하고 넘어가자.

 

루트 계정 비밀번호를 설정하는 화면이다.

루트 계정은 DB 최고 권한을 가진 계정 이기 때문에 비밀 번호를 잘 저장 해야 한다.

학습용인 경우 로컬로만 접속 할 거라면 간단하게 줘도 된다.(까먹으면 골치 아픔)

 

그리고 루트 계정 말고 따로 사용할 계정을 추가해 주자.

Add User 버튼을 눌러서 추가.

 

Host는 이 계정이 원격으로 접속 하는 것을 허용할 것인지 설정 하는 값이다.

localhost를 주면 MySQL DB가 설치된 PC로 와서만 로그인 할 수 있고, All Hosts는 원격으로 어디서든지 접속 할 수 있게 한다.

OK 눌러주고 다음으로 넘어가자.

 

MySQL DB 서버를 윈도우 서비스로 등록 할 것인지 체크 하는 화면이다.

Start the MySQL Server at System Startup에 체크를 하면 컴퓨터가 새로 시작할때마다 MySQL 서버를 자동으로 시작 한다.

 

여기선 그냥 Execute 눌러주자.

그러면 지금까지 한 설정이 DB 설정에 반영이 된다.

그리고 DB 초기화를 하고 서버를 시작 한다.

 

여기도 목록에 보이는 것들에 대한 설정을 시작 하겠다는 화면이다.

다음으로 넘어가자.

 

라우터 설정 화면이다.

MySQL DB를 클러스터링 했을때 라우터를 사용 하는데, 사용 하지 않을 것이기 때문에 그냥 Finish를 눌러주자.

 

여기도 그냥 Next.

 

여기 까지 왔다면 MySQL DB가 실행 되어 돌아가고 있다.

비밀 번호를 입력하고 Check를 눌러보면 Status 값으로 연결이 성공 됨을 알 수 있다.

그냥 연결 테스트를 한 것이다.

 

여기서도 Execute.

여기서도 Next.

 

MySQL Shell과 워크벤치를 자동으로 실행 할 것인지를 묻는 화면이다.

둘다 체크 해지 하고 Finish를 눌러 주자.

 

이제 MySQL이 잘 돌아가고 있는지 확인 해보자.

실행 창에서 "서비스"를 실행 하면

MySQL80이 실행 중으로 나오는데, 이게 MySQL DB를 위해 돌아가는 서비스 이다.

이것을 중지 시키면 DB가 중지 된다.

 

DB 접속 하려고 하는데, 연결이 안될 때는 어떤 이유로 인해 MySQL80가 멈춰 있을 수가 있다.

 

 

'Database > MySQL' 카테고리의 다른 글

[MySQL] MySQL 워크벤치 사용 하기  (0) 2022.04.05

+ Recent posts