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. 다 설치하고 했는데 unknown database 라고 나오신분 계신가요 ... ㅠㅠㅠ 더이상 진행을 못하구 있어요 ㅠㅠ
  2. 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 자세히 보기