Server Side JavaScript

MySQL 소개 및 기본 사용법

MySQL 소개

MySQL 설치 - 맥 (OSX)

MySQL 설치 - 리눅스 (ubuntu)

MySQL 설치 - 윈도우

MySQL 구조

MySQL 사용하기

MySQL - UPDATE & DELETE

node-mysql 1 : 접속

node-mysql 2 : SELECT & INSERT

node-mysql 3 : UPDATE & DELETE

예제

MySQL JavaScript로 제어하기 수업의 예제 

데이터베이스 보기

show databases;

데이터베이스 생성

CREATE DATABASE o2 CHARACTER SET utf8 COLLATE utf8_general_ci;

데이터베이스 선택

use o2;

테이블 생성

CREATE TABLE `topic` (
`id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `description` text NOT NULL,
  `author` varchar(30) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

생성된 테이블 확인

show tables;

데이터 삽입

INSERT INTO topic (title, description, author) VALUES('JavaScript','Computer language for web.', 'egoing');
INSERT INTO topic (title, description, author) VALUES('NPM','Package manager', 'leezche');

 

댓글

댓글 본문
작성자
비밀번호
  1. 얌돌
    npm install mysql --save

    하면됩니다
    대화보기
    • 가비앙
      C:\Users\Admin\dev\js\serverside_javascript>node database_mysql;
      module.js:540
      throw err;
      ^

      Error: Cannot find module 'C:\Users\Admin\dev\js\serverside_javascript\database_mysql;'
      at Function.Module._resolveFilename (module.js:538:15)
      at Function.Module._load (module.js:468:25)
      at Function.Module.runMain (module.js:684:10)
      at startup (bootstrap_node.js:187:16)
      at bootstrap_node.js:608:3


      이 에러 어떻게 해결해야 하나요?
    • 박인호
      1-16
      수강완료.
      감사합니다.
    • Byungsoo Kim
      감사합니다.
    • 열정을가진
      node실행하면 title이 나와야하는거 같은데....우째 뭐가문제일까요?

      var sql = 'SELECT * FROM topic';
      conn.query(sql, function(error, results, fields){
      if(error){
      console.log(error);
      }else{
      for(var i=0; i<results.length; i++){
      console.log(results[i].title);
      }
      }
      });
      conn.end();
    • sSll바버미니llSs
      고맙습니다~
      대화보기
      • 컴맹
        node database_mysql.js
        실행하면 처음엔 잘 접속되어있는듯하다가 30초 정도있다가 아래와 같은 메세지가 뜨면서 나와집니다.

        { Error: Connection lost: The server closed the connection.
        at Protocol.end (C:\nodejs\node_modules\mysql\lib\protocol\Protocol.js:109:13)
        at Socket.<anonymous> (C:\nodejs\node_modules\mysql\lib\Connection.js:109:28)
        at emitNone (events.js:91:20)
        at Socket.emit (events.js:185:7)
        at endReadableNT (_stream_readable.js:974:12)
        at _combinedTickCallback (internal/process/next_tick.js:74:11)
        at process._tickCallback (internal/process/next_tick.js:98:9)
        --------------------
        at Protocol._enqueue (C:\nodejs\node_modules\mysql\lib\protocol\Protocol.js:141:48)
        at Protocol.handshake (C:\nodejs\node_modules\mysql\lib\protocol\Protocol.js:52:41)
        at Connection.connect (C:\nodejs\node_modules\mysql\lib\Connection.js:130:18)
        at Object.<anonymous> (C:\nodejs\database_mysql.js:10:6)
        at Module._compile (module.js:570:32)
        at Object.Module._extensions..js (module.js:579:10)
        at Module.load (module.js:487:32)
        at tryModuleLoad (module.js:446:12)
        at Function.Module._load (module.js:438:3)
        at Module.runMain (module.js:604:10) fatal: true, code: 'PROTOCOL_CONNECTION_LOST' }

        해결법은 모르겠네요 ㅠ
      • 딴따라
        다 설치하고 따라하는데 에러가 나서 아래분들 글도 보고 여러가지 방법을 찾아봤는데 저는 var conn 에 제가 사용하는 mysql port 값을 넣으니 제대로 나오네요. 킁.
        var conn = mysql.createConnection({
        host : 'localhost',
        user : 'root',
        password : '1111',
        port : '포트넘버'
        database : 'o2'
        });
        언제나 잘보고 있습니다. 감사합니다.
      • 다 설치하고 했는데 unknown database 라고 나오신분 계신가요 ... ㅠㅠㅠ 더이상 진행을 못하구 있어요 ㅠㅠ
      • fallback
        아직 해결하지 못하셨으면...

        패키지 이름이 `node-mysql`에서 `mysql`로 변경되었습니다.
        * github site도 변경되었습니다. https://github.com......sql.

        * 윈도우에서 설치할 때, 아래 같은 에러가 발생하면, node-gym 사이트에 가시면, 해결책이 나와있습니다. mysql을 설치할 때, 호스트 환경에 따라 무언가를 다시 빌드해야 하나봅니다.
        [에러]
        MSBUILD : error MSB3428: Visual C++ 구성 요소 "VCBuild.exe"을(를) 로드할 수 없습니다. 이 문제를 해결하려면 1) .NET Framework 2.0 SDK를 설치하거나, 2) Microsoft Visual Studio 2005를 설치하거나, 3) 해당 구성 요소 가 다른 위치에 설치되어 있는 경우에는 그 위치를 시스템 경로에 추가하십시
        오. [c:\Users\JooYoung\workspace\js\server_side_javascript\node_modules\orientjs-native\build\binding.sln]
        [사이트] https://github.com......gyp
        * npm install --global --production windows-build-tools (관리자 모드로 실행한 커맨드 창에서 실행하셔야 합니다)
        * 시간이 좀 걸립니다.
        * node-gyp이 python 2.x를 사용하여 python 2.7을 설치한다음에, node-gyp이 그 2.7을 사용도록 설정해야 합니다.
        * 위에서 'npm install --global --production windows-build-tools'을 실행하면, 사용자 홈디렉토리 밑에 .windows-build-tools\python27이 이미 설치되어 있습니다.
        * npm config set python <파이썬설치디렉토리>를 설정하세요.

        프로젝트 디렉토리에서, npm install --save mysql을 실행하시면 됩니다
        대화보기
        • 준맹
          창피하네요 해결했습니다ㅜㅜ
          대화보기
          • 준맹
            안녕하세요
            강의 보고 따라하고 있는데,

            저는 console.log(rows);
            rows is not defined 라고 에러가 납니다ㅜㅜ

            console.log(fields)는 잘 되고요.
            rows가 정의되지 않았다고 나오니까
            그 밑에 영상에서 나오는 rows.length 역시 사용할 수가 없네요 ㅠㅠ저는 왜이러는거죠
          • openarms
            수업이 깔끔하네요!
          • ㅇㅇ
            대화보기
            • ㅇㅇ
              sudo 넣어보세용
              대화보기
              • 코발트블루
                $ npm install mysql --save 하는데.

                C:\Users\xx\dev\js\server_side_javascript\node_modules\orientjs-native>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "" rebuild )
                gyp ERR! configure error
                gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
                gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:449:14)
                gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:404:11
                gyp ERR! stack at FSReqWrap.oncomplete (fs.js:123:15)
                gyp ERR! System Windows_NT 10.0.14393
                gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
                gyp ERR! cwd C:\Users\xx\dev\js\server_side_javascript\node_modules\orientjs-native
                gyp ERR! node -v v6.9.1
                gyp ERR! node-gyp -v v3.4.0
                gyp ERR! not ok
                server_side_javascript@1.0.0 C:\Users\xx\dev\js\server_side_javascript
                `-- mysql@2.12.0 (git://github.com/mysqljs/mysql.git#7aa6da6f5928ebedb5a75c9c6c2ddd4ded2d00cd)

                npm WARN server_side_javascript@1.0.0 No repository field.
                npm WARN optional SKIPPING OPTIONAL DEPENDENCY: orientjs-native@2.2.2 (node_modules\orientjs-native):
                npm WARN optional SKIPPING OPTIONAL DEPENDENCY: orientjs-native@2.2.2 install: `node-gyp rebuild`
                npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1



                이런에러가나용
              • 코딩천사
                mysql 설치-윈도우에서
                제대로 따라했는데 mysql.exe 파일이 없습니다...
              • 바지락
                node-mysql 1 : 접속 하실때

                예제에 나와 있는 fields를 columns 로 바꾸셔야 에러가 나지 않습니다.

                var mysql = require('mysql');
                var conn = mysql.createConnection({
                host : 'localhost',
                user : 'root',
                password : '111111',
                database : 'o2'
                });
                conn.connect();

                var sql = 'SELECT * FROM topic';
                conn.query(sql, function(err, rows, columns){
                if(err){
                console.log(err);
                } else {
                console.log('rows', rows);
                console.log('columns', columns);
                }
                }
                });
              • excelsior0828
                안녕하세요!
                opentutorials에서 php수업을 완주하고 nodejs 수업을 듣고 있습니다.
                이전에 다운로드한 mampstack을 사용해서 mysql을 실행하기 위해 manager-osx로 들어갔습니다.
                apache web server는 running을 하지만 mysql database는 아무리 start를 눌러도 running이 되질 않습니다.
                mac사용하고 있구요.

                도와주시면 감사하겠습니다!
              • jwyoungs
                제가 한 가지 방법을 찾았습니다. 이게 안전한지 많이 쓰이는 방법인지는 잘 모르겠습니다.
                https://github.com......env
                이것을 활용하였습니다.
                대화보기
                • jwyoungs
                  안녕하세요.
                  mysql의 비번을 파일안에다가 적어두는 것이 위험하다고 말씀하셨는데, 다른방법을 취할 수 는 없나요? 감사합니다.
                • 호동
                  아래 댓글들을 보고 npm install --save mysql을 설치하니 전과 같은 오류메시지는 안 뜨는데 아래와 같은 오류가 뜨네요. 어떻게 해야 오류가 안 뜨는 건가요? 방법 좀 알려주세요.

                  { [Error: connect ECONNREFUSED 172.0.0.1:3306]
                  code: 'ECONNREFUSED',
                  errno: 'ECONNREFUSED',
                  syscall: 'connect',
                  address: '172.0.0.1',
                  port: 3306,
                  fatal: true }
                • 호동
                  안녕하세요.
                  Cloud9에서 MySQL을 실행하려고 하는데 계속 애러가 떠서요. MySQL과 node-mysql을 모두 설치했는데 뭐가 문제인 건지 모르겠어서요. 아래는 오류 내용입니다.

                  Important: use process.env.PORT as the port and process.env.IP as the host in your scripts!

                  Debugger listening on port 15454
                  module.js:327
                  throw err;
                  ^

                  Error: Cannot find module 'mysql'
                  at Function.Module._resolveFilename (module.js:325:15)
                  at Function.Module._load (module.js:276:25)
                  at Module.require (module.js:353:17)
                  at require (internal/module.js:12:17)
                  at Object.<anonymous> (/home/ubuntu/workspace/database_mysql.js:1:75)
                  at Module._compile (module.js:409:26)
                  at Object.Module._extensions..js (module.js:416:10)
                  at Module.load (module.js:343:32)
                  at Function.Module._load (module.js:300:12)
                  at Module.runMain [as _onTimeout] (module.js:441:10)

                  Process exited with code: 1
                • Peater Han
                  @jj 님

                  답변 감사합니다. connection 연결과 끊는 것은 여러 시도 끝에 연관이 없다는 것을 알게 되었었습니다. 결국 비동기 방식으로 인해 발생되었기 때문에, 콜백함수 내부 마지막에 최종 처리하도록 하거나 해당 모듈의 동기방식을 고려해야 겠네요.
                • @Peater Han 님

                  그건 Node.js 가 비순차적으로 작동되어서 그래요
                  mysql 관련 함우와 관계없이 비동기식이라 그렇습니다 또한 connetion 을 연결하고 끊는 거랑도 관계가 없습니다.
                  콜백 함수 이기 때문에 늦게 실행되는 것입니다~

                  https://opentutorials.org......884
                  영상 보시면 좋을 것 같습니다
                • soarhigh7
                  저도 node-mysql 로 설치했다가,

                  cannot find module 'mysql' 에러 나서 계속 검색했네요 ㅜㅜ


                  npm install --save mysql 요렇게 하니까 되네용~!
                • Peater Han
                  다른 방식으로 응용을 하려 했는데, 디버그하려고 conn.query 문 내의 함수가 외부에 있는 함수보다 늦게 실행이 되는 현상이 보이더라구요. 가령 예를 들면

                  var numRows;
                  var sql = 'SELECT * FROM person'; //person 테이블에 3개가 있다고 할 경우
                  conn.query(sql, function(err, rows, field){
                  if(err)
                  console.log(err);
                  else{
                  numRows = rows.length;
                  console.log('총개수', numRows);
                  }
                  });
                  conn.end();
                  console.log('numRows: ', numRows);

                  이렇게 할 경우
                  numRows: undefine
                  총개수: 3
                  이런식의 결과가 나오더라구요.
                  즉, 함수 mysql관련 함수가 늦게 실행되더라구요.
                • uncommonine
                  node-mysql 1 : 접속 영상에서 문제있으신분은 npm install node-mysql --save대신 npm install mysql --save으로 해주시면 됩니다. 참고: https://github.com......sql
                • sujin_suay
                  npm으로 mysql을 별도로 설치해주셔야합니다. 이미 문제 해결하셨겠지만요^^
                  대화보기
                  • danny
                    안녕하세요 동영상 강의를 보면서 문제가 생겼는데 해결을 하지 못해서 글 남깁니다.
                    현재 node-mysql1 접속 동영상을 공부하고 있고, npm node-mysql 설치와 알려주신 코드를 작성 후에 데이타베이스를 실행하기 위해 cmd에 node database_mysql.js 를 실행했는데

                    module.js:327
                    throw err;

                    Error : Cannot find module 'mysql'
                    at Function.Module._resolveFilename(module.js:325:15)
                    at Function.Module.load(module.js:276:25)
                    at Module.require(module.js:353:17)
                    at require (internal/module.js:12:17)
                    at Object.<anonymous> (C:\User\dev\js\server_side_javascript\database_mysql.js:1:80)

                    at Module._compile(module.js:409:26)
                    at Object.Module._extensions..js(module.js:416:10)
                    at Module.load(module.js:343:32)
                    at Function.Module._load(module.js:300:12)
                    at Function.Module.runMain(module.js:441:10)

                    이러한 에러가 발생했습니다. 분명히 똑같이 코드를 작성하고 모듈을 설치하였는데 안되니깐 답답하고 속상하네요 ㅠㅠ 혹시 이 문제가 왜 발생하는지 알 수 있을까요? 항상 감사합니다!!
                  • 지류진
                    감사합니다
                  • 초보자
                    채팅도 한번 넣는게 어떨까요?
                  버전 관리
                  egoing
                  현재 버전
                  선택 버전
                  graphittie 자세히 보기