my sql이랑 nodejs 연동하려는데 자꾸 오류가 납니다.

현재 '모던웹을 위한 node.js 프로그래밍' 이라는 교재를 사용하고 있습니다.

교재대로 진행중인데 오류가 자꾸나서 질문하고싶습니다.

먼저 mysql에 테이블 생성은 했구요,

node.js 에는

var mysql = require('mysql');

var client = mysql.createConnection({

user: 'root',

password: '278011',

database: 'Company',

insecureAuth: true

});

client.query('USE Company');

client.query('SELECT * FROM products', function(error,result,fields){

if(error){

console.log('쿼리 문장에 오류가 있습니다.');

} else {

console.log(result);

}

});

이렇게 했는데 쿼리 문장에 오류가 있다고만 출력됩니다..

구글링 했을때는 버전을 맞춰야한다, ALTER로 해결할 수 있다 하는데 어떤 방안이 없을지 여쭙니다.. 부탁드립니다...

    2개의 답변이 있어요!

    • 안녕하세요

      indentation이 깨져서 조금 알아보기 힘든것 같습니다. 원인은 node.js는 async로 동작을 하는데 sync라고 고려한 부분이 있어서 그런것 같구요.

      var mysql = require('mysql'); var client = mysql.createConnection({ user: 'root', password: '278011', database: 'Company', insecureAuth: true }); client.query('USE Company'); client.query('SELECT * FROM products', function(error,result,fields){ if(error){ console.log('쿼리 문장에 오류가 있습니다.'); } else { console.log(result); } });

      여기에서 각각의 문장에 await를 붙이시거나 client.query를 client.createConnection안으로 넣으시면 될 것 같습니다.

      일단 수행을 위해서 아래와 같이 고쳐보시면 좋을 것 같습니다.

      var mysql = require('mysql'); var client = await mysql.createConnection({ user: 'root', password: '278011', database: 'Company', insecureAuth: true }); await client.query('USE Company'); await client.query('SELECT * FROM products', function(error,result,fields){ if(error){ console.log('쿼리 문장에 오류가 있습니다.'); } else { console.log(result); } });

    • My SQL에 접속할 때 필요한 HOST 정보가 없는 것 같습니다.

      아래 코드와 같이 host 정보가 필요합니다.

      My SQL이 내컴퓨터에 설치가 되어 있다면 localhost를 사용하면 됩니다.

      const mysql = require('mysql'); const connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '278011', database : 'Company' });