programing

MariaDB 타임스탬프가 업데이트 날짜가 아닙니다.

lastcode 2023. 9. 4. 20:07
반응형

MariaDB 타임스탬프가 업데이트 날짜가 아닙니다.

테이블에 타임스탬프 필드를 추가했습니다.

각 쿼리에 지침을 추가하지 않고 마지막 업데이트를 저장할 필드가 필요합니다.

 `lastupd` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

문제는 모든 분야가0000-00-00 00:00:00및 쿼리 업데이트 시timestamp업데이트되지 않음

나는 할 것입니다5.5.60-MariaDBMariaDB 서버 및 사용MyISAM테이블

(내 기억이 맞다면) 그 오래된 버전에서, 그런.DEFAULT번째에만 적용할 수 있습니다. TIMESTAMP테이블에제공하십시오.SHOW CREATE TABLE.

InnoDB로 전환하는 것을 고려해 주십시오.

5.6.6 변경 로그에서:

MySQL에서 TIMESTAMP 데이터 유형은 다른 데이터 유형과 비표준적인 방식으로 다릅니다.

NULL 특성으로 명시적으로 선언되지 않은 TIMESTAMP 열에는 NOT NULL 특성이 할당됩니다.(NOT NULL로 명시적으로 선언되지 않은 다른 데이터 유형의 열은 NULL 값을 허용합니다.)이러한 열을 NULL로 설정하면 현재 타임스탬프로 설정됩니다.

NULL 특성 또는 명시적 DEFAULT 또는 ON UPDATE 절로 선언되지 않은 테이블의 첫 번째 TIMESTAMP 열에는 DEFAULT CURRE_TIMESTAMP 및 ON UPDATE CURRE_TIMESTAMP 특성이 자동으로 할당됩니다.

NULL 특성 또는 명시적 DEFAULT 절로 선언되지 않은 경우 첫 번째 TIMESTAMP 열에 DEFAULT '0000-00-00:00'("0" 타임스탬프)이 자동으로 할당됩니다.이러한 열에 대해 명시적인 값을 지정하지 않는 삽입된 행의 경우 열에 '0000-00-0000:00'이 할당되고 경고가 발생하지 않습니다.

이러한 비표준 동작은 TIMESTAMP의 기본값으로 유지되지만 이제는 더 이상 사용되지 않으며 시작 시 다음 경고가 표시됩니다.

[경고] 암시적 DEFAULT 값이 있는 TIMESTAMP는 더 이상 사용되지 않습니다.--explicit_defaults_for_timestamp 서버 옵션을 사용하십시오(자세한 내용은 설명서 참조).

경고에 표시된 것처럼 비표준 동작을 해제하려면 서버를 시작할 때 새 explicit_defaults_for_timestamp 시스템 변수를 사용하도록 설정합니다.이 변수를 사용 가능으로 설정하면 서버는 대신 다음과 같이 TIMESTAMP를 처리합니다.

TIMESTAMP 열이 NOT NULL 허용 NULL 값으로 명시적으로 선언되지 않았습니다.이러한 열을 NULL로 설정하면 현재 타임스탬프가 아닌 NULL로 설정됩니다.

DEFAULT CURRENT_TIMESTAMP 또는 ON UPDATE CURRENT_TIMESTAMP 특성은 TIMESTAMP 열에 자동으로 할당되지 않습니다.이러한 특성을 명시적으로 지정해야 합니다.

NOT NULL로 선언되고 명시적인 DEFAULT 절이 없는 TIMESTAMP 열은 기본값이 없는 것으로 간주됩니다.해당 열에 대해 명시적인 값을 지정하지 않는 삽입된 행의 경우 결과는 SQL 모드에 따라 달라집니다.엄격한 SQL 모드를 사용하도록 설정하면 오류가 발생합니다.엄격한 SQL 모드를 사용하도록 설정하지 않으면 열에 암시적 기본값인 '0000-00-0000:00'이 할당되고 경고가 발생합니다.이는 MySQL이 DATTIME과 같은 다른 시간 유형을 처리하는 방법과 유사합니다.

언급URL : https://stackoverflow.com/questions/54234413/mariadb-timestamp-is-not-updating-date

반응형