MySQL 5.5 & 5.6의 기본값 동작에 대한 설명이 필요합니다.MySQL 5.5 및 5.6 기본값
CREATE TABLE `test` (
`TestColumn` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB DEFAULT CHARSET=utf8;
나는 문제없이 다음 쿼리를 실행 할 수 있어요 : 우리는 MySQL을 5.5 서버에 다음과 같은 테이블이 있다고 가정하자
다음 행 생성INSERT INTO `test` VALUES (NULL);
:
TestColumn
2014-02-20 14:55:05
을
이제 MySQL 5.6 서버에서 동일한 테스트를 반복하면 삽입이 실패합니다.
Error Code: 1048
Column 'TestColumn' cannot be null
타임 스탬프 자동 초기화가 5.6 (http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html)으로 변경되었음을 알고 있습니다. 그러나 제가 해결할 수없는 것은 5.6에서 5.5에서 나타난 동작을 복제하는 방법입니다.
중요하지만 5.6 서버의 경우 explicit_defaults_for_timestamp가 ON으로 설정되어 있는지 확실하지 않습니다.
이상적으로 나는이 문제에 대한 해결책이지만 누군가가 더 잘 이해할 수 있고 그것을 설명하면 유용 할 수도 있습니다.
감사합니다.
편집 : 우리는
첫 번째 인서트가 처음에는 작동하지 않아야합니다. NULL 값을 null이 아닌 열에 넣으려고 * 데이터베이스에 요청 했으므로 5.6이 그것을 거부하는 것이 옳습니다. –
이것은 5.6 – bear
에서 작동합니다. @a_horse_with_no_name 열의 정의는 null이 될 수 없지만, 기본값이 제공되면 기본값을 사용합니다. 편집, 긁으십시오 – bear