본문 바로가기

BackEnd/DB-RDBMS

npm install mariasql..it doesn't working (a little envrionment problem.?)

윈도우와 리눅스를 모두 사용하는 환경에서 어떠한 모듈을 사용하는데 리눅스에선 아무 문제가 발생하지않지만

윈도우 환경에서 같은 모듈이라도 설치가 되지않는 경우가 있습니다.

대표적으로 오라클 연동에 필요한 jdbc 모듈이나 소켓통신에 사용되는 socket 모듈이 있는데요.

제가 사용하는 모듈은 MariaDB 커넥션 모듈인 mariasql 모듈입니다.

mariasql 모듈은 환경에 의존성이 높은 모듈입니다.

그래서, 리눅스처럼 디비커넥션이 수월하게 진행되지않았습니다.  

윈도우 환경에서 mariasql 커넥션에 성공하게 되었고

최초 mariasql모듈 사용이 가능했던 환경은 다음과 같습니다.

    • 윈도우7 64비트 서비스팩 1 (이상)

    • Visual Studio 2013 

    • Explorer 10 이상 ( 비쥬얼 스튜디오 설치 조건 )

    • Phython 2.7

    • Node 0.10.32

    • npm 3.3.10

    • mariasql 0.1.21 ( 모듈 )

    • nvm-win 0.2.4  (모듈 )

나열된 프로그램들 모두 INSTALL 방식이기때문에 모든 설치 방법에대해서 전부 설명드리진않겠지만 ( NEXT , NEXT ,ENTER .. )

NVM 에 대해서서는 설명을 드리도록 하겠습니다.

NVM 은  Node Virsion Management 의 약자로 Node 버전을 관리해주는 모듈입니다.

npmjs.org에 등록된 대부분에 nvm 모듈들은 리눅스 기반 환경이기때문에

저는 윈도우 환경에 적합한  nvm-win 모듈을 설치할것입니다.

NVM-WIN 모듈 사용 방법

사용과 설치는 무척 간단합니다.

npm install -g nvm-win   을 실행하여 모듈을 전역에 인스톨합니다.

인스톨이 완료되면 nvm-win init 를 입력해 실행 초기화 작업을 진행합니다.

그리고 nvm-win ls 를 통해 현재 설치되어있는 (관리될) 모듈 리스트를 확인합니다. 

*표시는 현재 사용하고 있는 모듈의 버전 입니다.

node 설치 와 사용

-설치는 nvm-win install 버전명 으로 가능합니다.

저는 0.12.7 버전을 설치해 보겠습니다.

버전이 존재하고 정상설치가 되면 리스트상에 추가된 0.12.7 이 확인될것입니다.

이제 설치한 버전을 사용해봐야겠죠. ?  

-사용은 nvm-win use 버전명 을 통해 사용이 가능합니다.

사용하는 노드 버전이 바뀌었습니다.

(정확한 확인을 원하시면 터미널상에 node -v 를 입력하여 확인해보시면됩니다.)

node 삭제

저는 3개의 Node.js 만 설치했지만 여러 프로젝트와 모듈에 맞게 여러 노드 버전을 관리하다보면 

사용하지않는 노드 버전을 지우고싶을때가 올것입니다.

삭제는 nvm-win uninstall 버전명 으로 진행합니다.

삭제가 잘된 모습을 확인할수 있습니다.


nvm-win 으로 노드 버전관리가 수월하게 된다면 이젠

Mariasql 인스톨로 넘어가겠습니다.


Mariasql 인스톨 방법

  1. Node 와 mariasql 버전 간에 호환성 문제
  2. marisql  0.1x 버젼과 0.2x 버젼의 커넥션 객체 호출의 차이

  • Node 와 mariasql 버전 간에 호환성 문제

Node.js Version

Mariasql Version 

호환 여부 

 4.2.X

  0.2.X

 YES

 4.2.X

  0.1.X

 NO

 0.1 X

  0.2.X

 YES

 0.1 X

  0.1.X

 YES 

노드 최신버전에선 하위버전인 mariasql 0.1.XX 모듈이 설치가 되지않습니다. (정확히 말해선 해결못했어요..:( )


  • marisql  0.1x 버젼과 0.2x 버젼의 커넥션 객체 호출의 차이

0.1.X 버전의  모듈 Client.js 파일에 일부입니다. 

해당 이벤트를 통해 다음과 같이 코드 구현이 가능합니다.

var query = c.query("SELECT * FROM users WHERE id > 1");
query.on('result', function(res) {
  // `res` is a streams2+ Readable object stream 
  res.on('data', function(row) {
    console.dir(row);
  }).on('end', function() {
    console.log('Result set finished');
  });
}).on('end', function() {
  console.log('No more result sets!');
});
       
       0.2X 버전은 0.1.X 방식으로 이벤트를 핸들링 할수없습니다.
따라서 , 다음과 같이 구현해서 사용해야 합니다.
c.query('SHOW DATABASES', function(errrows) {
  if (err)
    throw err;
  console.dir(rows);
});

    감사합니다.