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
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ơnCREATE 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;
5.6.5
- Tạo một cơ sở dữ liệu có tên là
6CREATE 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;
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ệuCREATE 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_TIMESTAMP
là DEFAULT
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 địnhTừ 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àyCREATE 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