분명, JDBC를 사용할 때에는, TinyInt를 Integer로 매핑을 했던 기억이 있는데, 에러가 발생하여 찾아보니 TinyInt(1)의 경우에만 Boolean으로 매핑이 되는 걸 알 수 있었다.(당연하겠지만...) R2dbc에서는 다른 매핑으로 작동될 까 걱정했지만, 우선 tinyInt를 boolean으로 매핑하는 점은 jdbc와 동일 한 것 같다. https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-type-conversions.html MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.5 Java, JDBC, and MySQL Types 6.5 Java, JDBC, and MySQL T..
mysql
mysql에서 timestamp 타입의 칼럼의 default 값을 설정하다가 계속 위와 같은 에러가 발생하였다... 도대체 내가 뭘 잘못하고 있는 건지 정말 별짓을 다했는데 알고보니 mysql에서 정의한 timestamp의 범위를 벗어난 값을 설정하려고 해서 생긴 문제였다. mysql 공식문서를 참고해보니, 아래와 같이 범위를 지정하고 있었다. The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD hh:mm:ss' format. The supported range is '1000-01-01 00:00:00' to '9..
위의 에러메시지를 내가 어떻게 해결 했는지 정리하자. 참고로 나는 MySQL 버전 8.x.x를 사용하였다. 현상 mysql을 설치 후, mysql -u root 로 접근을 하려고 하면, 계속 아래의 에러메시지가 발생하였다. "[MySQL]ERROR 2002 (HY000): Can't connect to local MySQL server through socker" stackoverflow에 제시된 방법인 sudo mysql.service start 로 열심히 다시 mysql을 실행해보려고 했지만, 이번에는 아래의 에러 메시지를 출력하면서 여전히 작동하지 않았다. "The server quit without updating PID file" 해결책 1. 서버 시작 systemctl start mysqld..
NestJS 프로젝트를 하게 되면 만들게 되는 entity파일들을 통해, DB 테이블을 생성하는 방법은 많이 이용해 봤을 것이다. (참고로, synchronize 옵션을 통해 가능하다.) 이번에는 반대로 DB에 생성된 테이블들을 이용해 entity파일을 만드는 방법에 대해 정리해본다. 1. 라이브러리 설치 npm i -g typeorm-model-generator 2. cli 명령어로 entity 파일 생성 npx typeorm-model-generator -h IP주소 -d DATABASE이름 -p 포트 -u DB계정 -x 비밀번호 -e DB타입(e.g. mysql) -o 파일 출력장소(e.g. ./src/migrations/test) 이제 위 명령어로 매우 간단하게 entity 파일을 생성할 수 있다.
TypeORM이 무엇이고, 왜 필요한지, 그리고 어떻게 사용할 수 있는지에 대해 알아보자. ORM??? ORM(Object Relational Mapping)은 말 그대로 Object와 관계형 데이터베이스의 데이터를 맵핑해주는 것을 의미한다. 일반적으로 OOP는 Object를 사용하고, RDB는 table을 사용한다. 이렇게 OOP의 모델과 RDB의 모델간에 불일치가 존재하고, ORM은 객체간의 관계를 바탕으로 SQL을 생성하여 불일치를 해결한다. 즉, 객체를 통해 간접적으로 데이터베이스의 데이터를 다룰 수 있게 된다. Why People use ORM? ORM을 사용함으로써 얻을 수 있는 이득은 아래와 같다. 객체지향적인 코드로 인해 더 직관적이고 비지니스 로직에 집중 할 수 있게 된다. SQL Que..