MySQL 열 유형 "TIMESTamp"에는 "NOT NULL DEFAULT CURRENT_TIMESTamp ON UPDATE CURRENT_TIMESTamp"가 함축적으로 포함되어 있습니다.
몇 시간 동안 이 버그를 추적했습니다.다음 SQL이 주어졌을 때:
DROP DATABASE IF EXISTS db;
CREATE DATABASE db;
CREATE TABLE db.tbl (t1 TIMESTAMP) ENGINE=INNODB;
SHOW CREATE TABLE db.tbl;
마지막 줄은 다음과 같습니다.
'CREATE TABLE `tbl` (
`t1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1'
도대체 어디서 하는 거지?NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
어디서 왔습니까?저는 그 중 어떤 것도 쓰지 않았고, 그 중 어떤 것도 원하지 않습니다. 그리고 MySQL이 그런 추정을 할 것이라는 말에 좀 막막합니다.
이상하고 모호한 구성 옵션을 켜거나 끄나요?기본 동작입니까?벌레라고요?어쨌든 MySQL이 정상적으로 동작하도록 하려면 어떻게 해야 합니까?
MySQL 5.6.5에는 이 초기화와 관련된 몇 가지 업데이트가 있으며, 이 링크(Automatic Timestamp Properties Before MySQL 5.6.5)에서 확인할 수 있습니다.
MySQL <= 5.6.5를 사용하는 경우 이 초기화를 무시하려면 DEFAULT 값을 0 또는 NULL이 허용된 NULL로 설정해야 합니다.
CREATE TABLE tbl
(
field1 TIMESTAMP DEFAULT 0,
field2 TIMESTAMP NULL DEFAULT NULL
)
MySQL >= 5.6.6을 사용하는 경우 explicit_defaults_for_timestamp라는 매개 변수가 기본적으로 비활성화되어 있습니다.이 설정을 활성화하거나 DEFAULT 값을 이전 MySQL 버전과 동일한 접근 방식인 0 또는 NULL로 설정할 수 있습니다.
MySQL >= 8.0.2를 사용하는 경우 explicit_defaults_for_timestamp가 기본적으로 활성화됩니다.이렇게 하면 비표준 동작이 비활성화됩니다(감사하게도).또한 MySQL은 이 설정을 비활성화하면 경고를 생성합니다.예를 들어, A에 대한 DEFAULT 값을 정의하지 않으면TIMESTAMP
열, 자동으로 다음으로 설정됩니다.NULL
.
CREATE 문에 명시적으로 명시하지 않더라도 사용되고 있는 기본값입니다.둘 다 피하고 싶다면 다음을 사용합니다.t1 TIMESTAMP DEFAULT 0
아니면ts1 TIMESTAMP NULL DEFAULT NULL
갱신하다
MySQL 5.6.5 이전에는 사용만 가능했습니다.TIMESTAMP
행이 변경되면 자동으로 업데이트되는 열을 가지려는 경우.유감스럽게도 이 기능은 MyISAM에 한정되어 InnoDB 테이블에서는 사용할 수 없습니다.
MySQL 5.6.5를 통해 다음과 같은 기능을 제공합니다.DATETIME
뿐만 아니라.자세한 내용은 이 사이트의 다른 게시물 참조
언급URL : https://stackoverflow.com/questions/22860351/mysql-column-type-timestamp-implicitly-includes-not-null-default-current-time
'programing' 카테고리의 다른 글
서버 A(Master로 생각하고 있음)에서 서버 B로 생성된 binlog 파일로 MYSQL 복제를 설정할 수 있습니까? (0) | 2023.10.02 |
---|---|
장고의 AJAX를 통해 매개 변수를 게시하는 동안 "CSRF 토큰 누락 또는 부정확" (0) | 2023.09.27 |
깃, 머큐리얼, 바자의 상대적 강점과 약점은? (0) | 2023.09.27 |
Android Spinner : 아이템 회피초기화 중에 선택한 호출 (0) | 2023.09.27 |
예상되는 Oracle 예외에 대한 PHP 경고 억제 (0) | 2023.09.27 |