2038년 버그: 종합 가이드
2038년 버그는 서명된 32비트를 사용하는 시스템에서 발생할 수 있는 잠재적인 소프트웨어 오작동입니다. 1970년 1월 1일 이후의 초 수로 시스템 시간을 저장하는 정수입니다. 자세한 내용은 다음과 같습니다. 분석:
2038년 문제는 무엇입니까?
2038년 1월 19일 03:14:07 UTC를 초과하면 32비트 카운터가 UNIX 시대가 "순환"되어 12월 시간으로 해석된 음수 값을 저장한 이후 초 1901.
원인과 결과
32비트 정수의 최대값을 초과했기 때문에 발생합니다. 이 시간 표시에 의존하는 시스템은 미래 날짜를 과거 날짜로 잘못 해석하여 잠재적으로 오류 및 실패를 일으킬 수 있습니다.
해결책:
- 긴 데이터 유형을 사용합니다(64 비트 이상).
- MySQL 또는 MariaDB에서는 DATE(날짜만 해당) 또는 DATETIME(날짜만 해당) 사용을 고려하세요. 및 시간)을 사용합니다.
- 추가 해결 방법은 2038년 문제에 대한 Wikipedia 페이지를 참조하세요.
- MySQL을 버전 8.0.28로 업데이트하거나
대안:
- 데이터베이스에 큰 유형(예: 64비트)을 사용합니다.
잠재적인 무단 사용 사례:
- MySQL DATETIME은 TIMESTAMP(1970-2038)보다 범위(1000-9999)가 더 좁으므로 생년월일 및 향후 날짜와 같이 2038년 이후의 날짜에 대해 잠재적인 문제가 발생할 수 있습니다.
개조 기존 애플리케이션:
- TIMESTAMP를 사용하는 PHP 애플리케이션의 경우 열을 DATETIME으로 변환하는 것을 고려하세요. 이 변환을 실행하려면 답변 섹션에 제공된 단계를 따르십시오.
자원:
- 2038년 문제(Wikipedia): https:// en.wikipedia.org/wiki/Year_2038_problem
- 인터넷 30년 후에 종료됩니다: https://www.theregister.com/2022/08/06/year_2038_bug_web/
위 내용은 2038년 문제는 무엇이며 어떻게 피할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!