'dateAdded'에 대한 잘못된 기본값


91

SQL에 대해 수정할 수없는 어리석은 문제가 있습니다.

ALTER TABLE`뉴스` 
 ADD`dateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AUTO_INCREMENT,
 기본 키 추가 (`dateAdded`)

오류:

(#1067)Invalid default value for 'dateAdded'

누군가 나를 도울 수 있습니까?


8
이것은 어리석은 질문 일 수 있지만 왜 당신은 AUTO_INCREMENT DATETIME?
jave.web

답변:


138

CURRENT_TIMESTAMPTIMESTAMP필드 에서만 허용 됩니다. DATETIME필드는 널 기본값으로 남겨 두거나 기본값이 전혀 없어야합니다. 기본값은 표현식의 결과가 아닌 상수 값이어야합니다.

관련 문서 : http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

새 레코드의 "지금"값을 채우도록 테이블에 삽입 후 트리거를 설정하여이 문제를 해결할 수 있습니다.


70
mysql 5.6.5부터 DATETIME 필드와 함께 CURRENT_TIMESTAMP를 사용할 수 있습니다. 참조 dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
프랭크 Schwieterman에게

2
감사합니다 Frank는 내 보낸 db를 최신 xampp에서 이전 db로 가져올 때이 문제를 발견했습니다.
The HCD

HCD, Frank ... MariaDb 10.x에서 MariaDB 5.5로 내보내는 동일한 문제를 발견했습니다. 감사합니다
Aukhan

1
이 오류는 mariadb 5.5에서도 발생합니다. mariadb 10으로 업그레이드하면 해결되었습니다. 감사합니다 Frank
Samuel Tesler


17

또한 MySQL 5.7.x에서 DATETIME로 지정 DATETIME(3)하거나 이와 같이 지정할 때 CURRENT_TIMESTAMP(3). 그렇지 않으면 ' 잘못된 기본값 '이 계속 발생 합니다.


1
이것은 5.7.x에서 문제를 해결했습니다. 내 datetime 필드는 datetime (6)으로 정의되었고 CURRENT_TIMESTAMP (6)를 사용하여 문제가 해결되었습니다
Brad

1
이것은 매우 가치가 있습니다.
Mateus Felipe

1

나는 같은 문제가 있었고 수정을 통해 내 문제가 해결되었습니다.

  • 유형을 'TIMESTAMP'로 선택하십시오.

  • 길이 / 값 필드에 아무 것도 입력하지 마십시오. 빈칸 유지

  • CURRENT_TIMESTAMP를 기본값으로 선택합니다.

MySQL 버전 5.5.56을 사용하고 있습니다.



0

mysql 버전 5.5는 날짜 시간 기본값을 CURRENT_TIMESTAMP로 설정하면 버전 5.6으로 업데이트 할 수있는 보고서 오류가 발생하며 날짜 시간 기본값을 CURRENT_TIMESTAMP로 설정합니다.


0

유형을 datetime에서 timestamp로 변경하면 작동합니다! mysql 5.5.56-MariaDB-MariaDB Server에 대해 동일한 문제가 발생했습니다. 도움이 될 수 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.