nestjs로 프로젝트 진행 중, mysql2 모듈로 로컬호스트 테스트 중 발생한 에러 const connection = await mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', port: 3306, database: 'test', }); 위와 같이 연결 시도를 했을 때, 아래와 같은 에러 발생 Error in getDB(): Error: connect ECONNREFUSED ::1:3306 at Object.createConnection (/var/www/example.com/node_modules/mysql2/promise.js:242:31) at getDB (/var/www/example.com/control/..
평소 테스트코드 활용 시 속도를 위해 SQLite를 주로 이용하는 편인데, 아무래도 실제 주로 사용하는 MySQL과 일부 다른 부분이 있다보니 유의해서 사용해야 할 필요가 있어 적어봅니다. 사실상 아래 요소 중 제일 유의해야 할 부분은 데이터유형 문제일 것 같고, 그중에서도 날짜 형식에 신경을 잘 써줘야겠습니다. SQLite vs MySQL SQL 문법: SQLite는 LIMIT 절을 사용하여 쿼리에서 반환되는 행 수를 제한합니다. MySQL도 **LIMIT 절을 사용하지만 결과 집합의 시작 부분부터 오프셋을 지정하는 LIMIT ... OFFSET 구문도 지원합니다. SQLite는 와일드카드 문자 %와 함께 LIKE 연산자를 지원하지만, MySQL은 %와 _를 와일드카드 문자로 모두 지원합니다. SQLi..
최근에 진행중인 프로젝트에서, upsert를 활용중에 이상한 문제를 직면했습니다 개략적인 프로세스는 위처럼 2종류의 크롤러가 각각 테이블 A, B에 데이터를 밀어넣는데, 이 데이터는 중복될 수도 있고 시간에 따라 업데이트가 됩니다. 이러한 구조를 위해 DB에서 upsert 쿼리를 사용하였는데, 쿼리는 아래와 같습니다. INSERT INTO table_C (some_columns) SELECT some_columns FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY unique_key ORDER BY column DESC) t, c.* from table_A c ) a where a.t
default: 사용자가 값을 명확하게 주지 않으면, 지정된 default 값으로 입력 -> null을 밀어넣으면 들어간다. not null: 사용자가 뭐라 하건, null은 무조건 입력 불가능 -> null을 밀어넣으면 에러 발생 INSERT INTO table_name (columns) VALUES (values); 처음에는 위와 같이 입력하는 SQL에서 자동으로 default 값이 채워지는 것을 보고 막연하게 '아, null은 default로 채워지는구나' 라고 생각했습니다. 그런데, 이번에 크롤러와 관련된 조금 규모가 큰 프로젝트를 진행하면서 수많은 null을 처리하면서 위 두 가지 개념이 비슷해보이지만 다른 개념이라는 것을 배웠습니다. 프로젝트중에 null을 처리하긴 해야겠지만, 크롤러를 쓰다보..