TIMESTAMP에 관하여 질문드립니다.. 0 6 1,727

by 곡예사 [MySQL] mysql timestamp [2022.07.04 13:57:21]


mysql 버전은 5.1버전을 사용중인것 같습니다.

엔진은 InnoDB 사용중이구요.

 

문제가

reg_date_tran timestamp DEFAULT '0000-00-00 00:00:00' NOT NULL,

reg_date timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,

 

테이블을 만들때 위처럼 넣으려고 하면

Invalid default value for 'reg_date_tran' 이러한 오류가 발생합니다..

 

타임스탬프에 관련된 이유같은데 정확히 어떤 이유 때문에 오류가 발생하는지 인지하지 못해서 진행을 못하고 있습니다.. 꼭 이유와 해결법을 알고 넘어가고 싶습니다 도와주세요 ㅜㅜ

by 우리집아찌 [2022.07.04 14:01:19]

00월00일 자체가 날자값에 틀린것 아닌가요?


by 곡예사 [2022.07.04 14:06:21]

1970-01-01 00:00:00 이렇게 바꿔도 안되더라구요 ..


by pajama [2022.07.04 14:08:48]

저는 보여주신 문장 5.0버전에서 테스트 해봤는데 되네요.

아래 링크보면 sql_mode 설정에 따라서 그럴수 있다고 합니다. 

https://stackoverflow.com/questions/9192027/invalid-default-value-for-create-date-timestamp-field

 

 

mysql> create table t1 (
    -> reg_date_tran timestamp DEFAULT '0000-00-00 00:00:00' NOT NULL,
    -> reg_date timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL)
    -> ;
Query OK, 0 rows affected (0.04 sec)

mysql> SET SQL_MODE='NO_ZERO_DATE';
Query OK, 0 rows affected (0.00 sec)

mysql> drop table t1;
Query OK, 0 rows affected (0.02 sec)

mysql> create table t1 ( reg_date_tran timestamp DEFAULT '0000-00-00 00:00:00' NOT NULL,  reg_date timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL);
ERROR 1067 (42000): Invalid default value for 'reg_date_tran'

mysql>  create table t1 ( reg_date_tran timestamp DEFAULT '1970-01-01 00:00:00' NOT NULL,  reg_date timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL);
ERROR 1067 (42000): Invalid default value for 'reg_date_tran

 


by 곡예사 [2022.07.04 14:59:52]

모드 설정이 답이었군요 .. 말씀해주신대로 찾아보고 설정변경후에 다시해보니까 정상적으로 작동했습니다. 감사합니다 !


by 마농 [2022.07.04 15:04:32]

MySQL 은 표준에 어긋나는 부분을 허용하는 경우가 많습니다.
표준에 따를지 여부를 옵션으로 설정할 수 있구요. (기본은 비표준?)
0년0월0일은 표준 날짜가 아닙니다.
억지로 비표준으로 갈 필요가 있을지? 고민해 보세요.
DEFAULT 를 굳이 설정할 필요가 있는지도 고민해 보세요.


by 곡예사 [2022.07.04 15:53:05]

자세한 설명 정말 감사드립니다.

자료를 좀 더 찾아보면서 말씀하신대로 고민해보겠습니다 ㅎㅎ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입