예전에는 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
라는 속성에 따로 설정을 해줘야 했었다......
정말 짜증나는 하루였지만 그래도 해결해서 나름 편--안!