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. 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 자세히 보기