Programming/에러노트

[MySQL] timestamp의 default값이 등록되지 않을 때

개발도비 2022. 6. 16. 20:24

 

create table tbl_article (
article_no int not null auto_increment primary key,
title varchar(200) not null,
content text null,
writer varchar(50) not null,
regdate timestamp default now(),
viewcnt int default 0
);

 

게시글 등록할 때의 시간이 자동으로 등록되도록  timestamp의 default now()를 이용하여 쿼리를 작성했는데 자꾸 null값만 생성되는 오류사항이 있었다. 문제는 DB툴에서 직접 데이터를 넣어주면 regdate가 잘 들어가는데 서버를 실행하여 직접 게시글을 작성하거나 테스트코드를 돌리면 계속 널값이 들어간다는 것.

    <insert id="create">
        INSERT INTO tbl_article (
                                  article_no
                                , title
                                , content
                                , writer
                                , regdate
                                , viewcnt
        ) VALUES (
                   #{articleNo}
                 , #{title}
                 , #{content}
                 , #{writer}
                 , #{regDate}
                 , #{viewCnt}
                 )
    </insert>

 

원인은 insert 쿼리문에 있었다.

default는 아무 값도 주지 않을 때를 의미하는 것인데 null값을 줘버리니까 db에 그렇게 들어간 것이다

따라서 위 쿼리에서 regdate와 #{regDate} 부분을 아예 지워버려야 한다.