Giá trị mặc định dấu thời gian Mysql 0000

Bài viết này hướng dẫn bạn cách sử dụng CURRENT_TIMESTAMP như DEFAULT trong các phiên bản MySQL nhỏ hơn 5.6.5. Nhờ đó, bạn có thể ngăn chặn Lỗi MySQL 1293

Phương pháp của chúng tôi bao gồm sắp xếp lại thứ tự các cột trong bảng và sử dụng DEFAULT 0 và giá trị thời gian

Hãy tạo lại lỗi trước khi chỉ cho bạn cách sử dụng CURRENT_TIMESTAMP như DEFAULT. Đây là lỗi mà bạn sẽ gặp phải khi cố gắng sử dụng CURRENT_TIMESTAMP như DEFAULT

Để làm theo, hãy làm như sau

  • Tải xuống phiên bản MySQL nhỏ hơn 5.6.5. Bạn sẽ nhận được điều này như một phần của XAMPP 1. 8. 0, hoặc các phương tiện khác
  • Mở MySQL trong XAMPP, đăng nhập bằng
    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;
    
    3. Bạn sẽ nhận thấy phiên bản MySQL là
    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;
    
    4, vì vậy nó nhỏ hơn 5.6.5
  • Tạo một cơ sở dữ liệu có tên là
    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;
    
    6

Bây giờ, hãy sử dụng câu lệnh SQL sau để tạo bảng

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;
7 trong cơ sở dữ liệu

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;

Bạn sẽ gặp lỗi như trong hình sau

Sắp xếp lại các cột trong bảng để sử dụng CURRENT_TIMESTAMP như DEFAULT trong MySQL

Bạn có thể sử dụng CURRENT_TIMESTAMP như DEFAULT nếu bạn sắp xếp lại thứ tự các cột của bảng trong truy vấn SQL của mình. Cột có CURRENT_TIMESTAMPDEFAULT sẽ xuất hiện trước;

Trong SQL sau, chúng tôi đã sắp xếp lại SQL và MySQL tạo bảng

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;

Đầu ra trong bảng điều khiển MySQL

Sử dụng DEFAULT 0 là một tùy chọn khác sẽ cho phép bạn sử dụng CURRENT_TIMESTAMP như DEFAULT. Bạn sẽ áp dụng nó cho

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;
4 cột không có giá trị mặc định

Từ SQL của chúng tôi, đây là cột

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;
9. SQL sau đây chỉ cho bạn cách thực hiện việc này

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;

Đầu ra trong bảng điều khiển MySQL

Nếu mặc định của

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;
4 là thời gian, bạn có thể sử dụng CURRENT_TIMESTAMP làm DEFAULT trên các cột khác. Giá trị thời gian này là
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;
3 và chúng tôi đã sử dụng nó trên cột
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;
9

Làm cách nào để đặt ngày mặc định 0000 00 00 trong MySQL?

Để không cho phép phần 0 của tháng hoặc ngày trong ngày, bật chế độ NO_ZERO_IN_DATE . MySQL cho phép bạn lưu trữ giá trị “không” của '0000-00-00' dưới dạng "ngày giả. ” Trong một số trường hợp, điều này thuận tiện hơn so với việc sử dụng các giá trị NULL và sử dụng ít dữ liệu và không gian chỉ mục hơn. Để không cho phép '0000-00-00' , hãy bật chế độ NO_ZERO_DATE.

0000 00 00 trong MySQL ngày 0000 00 là gì?

MySQL cho phép bạn lưu trữ giá trị "không" của '0000-00-00' dưới dạng "ngày giả . ” Điều này trong một số trường hợp thuận tiện hơn việc sử dụng các giá trị NULL. Nếu một ngày được lưu trữ trong cột NGÀY không thể được chuyển đổi thành bất kỳ giá trị hợp lý nào, MySQL sẽ lưu trữ '0000-00-00'. Để không cho phép '0000-00-00' , hãy bật chế độ SQL NO_ZERO_DATE.

Giá trị mặc định cho TIMESTAMP trong MySQL là gì?

Giá trị mặc định của nó được xác định là CURRENT_TIMESTAMP và không có giá trị nào được chỉ định cho cột. CURRENT_TIMESTAMP hoặc bất kỳ từ đồng nghĩa nào của nó, chẳng hạn như NOW[] được chèn rõ ràng vào cột.

Giá trị mặc định không hợp lệ cho TIMESTAMP trong MySQL là gì?

Được đăng bởi nhà phát triển. mô tả cập nhật. MySQL không chấp nhận các giá trị DẤU THỜI GIAN bao gồm số 0 trong cột ngày hoặc tháng hoặc các giá trị không phải là ngày hợp lệ . Ngoại lệ duy nhất cho quy tắc này là giá trị "không" đặc biệt '0000-00-00 00. 00. 00', nếu chế độ SQL cho phép giá trị này.

Chủ Đề