[Sequelize] updated_at 설정 오류

아이엠강욱·2023년 1월 16일
0

예전에는 ORM이 아니라 Query를 직접 작성해서 프로그래밍 했었는데.. 이번에 처음으로 MySQL의 ORM인 sequelize를 사용해보고 있다.

나는 테이블을 설계할 때 항상 CREATED_AT, UPDATED_AT을 설정해주는 편이다.

CREATED_AT: CURRENT_TIMESTAMP
UPDATED_AT: CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

다음과 같이 항상 설정을 해주는 편이다.

express에서 model 디렉토리에 도메인별로 파일을 생성했다.
예시를 하나 들어보면..

CREATED_AT: {
    type: 'TIMESTAMP',
	allowNull: false,
	defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
    comment: '생성 일자'
},
UPDATED_AT: {
	type: 'TIMESTAMP',
	allowNull: false,
	defaultValue: Sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
	comment: '수정 일자'
}

이렇게 모든 테이블에 적용을 했었다.

근데 이게 무슨일?

default current_time update on current time
code: 'ER_PARSE_ERROR',
     errno: 1064,
     sqlState: '42000',
     sqlMessage:
      'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near \'ON UPDATE CURRENT_TIMESTAMP,?)\' at line 1'

해당 에러가 계속해서 발생하는거다...
아무리 봐도 문제가 전혀 없어보이는데... (이러면서 과장 조금 더해서 하루동안 왜인지 헤멘 듯..)

알고보니 model 설정에서 실수했었다!

UPDATED_AT: {
	type: 'TIMESTAMP',
	allowNull: false,
	defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
    onUpdate: Sequelize.literal('CURRENT_TIMESTAMP')
	comment: '수정 일자'
}

onUpdate 라는 속성에 따로 설정을 해줘야 했었다......

정말 짜증나는 하루였지만 그래도 해결해서 나름 편--안!

profile
블로그 이전했습니다!! https://dev-iamkanguk.tistory.com/ <<- 여기로 오세용!!

0개의 댓글