MySQL에서 CURRENT_TIMESTAMP를 기본값으로 사용

Habdul Hazeez 2024년2월15일
  1. MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용할 때 오류 재현
  2. MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용하도록 테이블 열 재정렬
  3. DEFAULT 0을 사용하여 MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용
  4. 시간 값을 사용하여 MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용
MySQL에서 CURRENT_TIMESTAMP를 기본값으로 사용

이 기사에서는 CURRENT_TIMESTAMP5.6.5 미만의 MySQL 버전에서 DEFAULT로 사용하는 방법을 설명합니다. 결과적으로 MySQL 오류 1293을 방지할 수 있습니다.

우리의 방법에는 테이블 열 재정렬과 DEFAULT 0 및 시간 값 사용이 포함됩니다.

MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용할 때 오류 재현

CURRENT_TIMESTAMPDEFAULT로 사용하는 방법을 보여주기 전에 오류를 재현해 보겠습니다. 이것은 CURRENT_TIMESTAMPDEFAULT로 사용하려고 할 때 발생하는 오류입니다.

따라 하려면 다음을 수행하십시오.

  • 5.6.5 미만의 MySQL 버전을 다운로드하십시오. XAMPP 1.8.0 또는 다른 수단의 일부로 이것을 얻을 수 있습니다.
  • XAMPP에서 MySQL을 열고 mysql -u root -p로 로그인합니다. MySQL 버전이 5.5.2a이므로 5.6.5 미만임을 알 수 있습니다.
  • just_a_test_db라는 데이터베이스를 작성하십시오.

이제 다음 SQL을 사용하여 데이터베이스에 site_users 테이블을 만듭니다.

CREATE TABLE site_users (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_validated TIMESTAMP,
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;

다음 이미지와 같이 오류가 발생합니다.

MySQL 5.5.25a의 MySQL 오류 1293

MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용하도록 테이블 열 재정렬

SQL 쿼리에서 테이블 열을 재정렬하는 경우 CURRENT_TIMESTAMPDEFAULT로 사용할 수 있습니다. DEFAULTCURRENT_TIMESTAMP가 있는 열이 먼저 와야 합니다. TIMESTAMP 값이 있는 다른 열이 뒤에 와야 합니다.

다음 SQL에서 우리는 SQL을 재정렬했고 MySQL은 테이블을 생성합니다:

CREATE TABLE site_users (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    date_validated TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;

MySQL 콘솔의 출력:

테이블 열을 재정렬한 후 데이터베이스 테이블을 성공적으로 생성했습니다

DEFAULT 0을 사용하여 MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용

DEFAULT 0을 사용하는 것은 CURRENT_TIMESTAMPDEFAULT로 사용할 수 있는 또 다른 옵션입니다. 기본값이 없는 TIMESTAMP 열에 적용합니다.

SQL에서 이것은 date_validated 열입니다. 다음 SQL은 이 작업을 수행하는 방법을 보여줍니다.

CREATE TABLE site_users_2 (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_validated TIMESTAMP NOT NULL DEFAULT 0,
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;

MySQL 콘솔의 출력:

MySQL 5.5.25a의 TIMESTAMP 열에 DEFAULT 0 사용

시간 값을 사용하여 MySQL에서 CURRENT_TIMESTAMPDEFAULT로 사용

TIMESTAMP의 기본값이 시간이면 CURRENT_TIMESTAMP를 다른 열에서 DEFAULT로 사용할 수 있습니다. 이 시간 값은 0000-00-00 00:00:00이며 date_validated 열에서 사용했습니다.

다음 SQL은 이를 실제로 보여줍니다.

CREATE TABLE site_users_3 (
    user_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(255) NOT NULL UNIQUE,
    user_firstname VARCHAR(255) NOT NULL,
    user_surname VARCHAR(255) NOT NULL,
    user_email_address VARCHAR(255) NOT NULL UNIQUE,
    user_password CHAR(40) NOT NULL,
    is_active BOOL NOT NULL DEFAULT FALSE,
    is_validated BOOL NOT NULL DEFAULT FALSE,
    date_validated TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
    date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (user_id)
) Engine=InnoDB;

MySQL 콘솔의 출력:

MySQL 5.5.25a에서 TIMESTAMP 열에 시간 값 사용하기

Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

관련 문장 - MySQL Timestamp