Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để đặt giá trị mặc định của trường là '0000-00-00 00:00:00'?

Nguyên nhân của lỗi:chế độ SQL

Bạn có thể đặt giá trị mặc định của DATE , DATETIME hoặc TIMESTAMP trường thành giá trị "không" đặc biệt của '0000-00-00' làm ngày giả nếu chế độ sql cho phép nó. Đối với các phiên bản MySQL thấp hơn 5.7.4, điều này được thống trị bởi chế độ NO_ZERO_DATE, hãy xem đoạn trích này của tài liệu :

Ngoài ra, chế độ nghiêm ngặt phải được bật để không cho phép các giá trị "không":

Kể từ MySQL 5.7.4 điều này chỉ phụ thuộc vào chế độ nghiêm ngặt:

Kiểm tra phiên bản và chế độ SQL

Vì vậy, bạn nên kiểm tra phiên bản MySQL của mình và chế độ SQL của máy chủ MySQL của bạn với

SELECT version();
SELECT @@GLOBAL.sql_mode global, @@SESSION.sql_mode session

Bật CHÈN

Bạn có thể đặt sql_mode cho phiên của mình bằng SET sql_mode = '<desired mode>'

SET sql_mode = 'STRICT_TRANS_TABLES';   

Phạm vi hợp lệ trong DATETIME

Phạm vi được hỗ trợ cho DATETIME

[1000-01-01 00:00:00] to ['9999-12-31 23:59:59'], 

vì vậy giá trị DATETIME hợp lệ tối thiểu là '1000-01-01 00:00:00'.
Tuy nhiên, tôi không khuyên bạn nên sử dụng giá trị này.

Ghi chú bổ sung

Kể từ MySQL 5.6.5 tất cả TIMESTAMPDATETIME các cột có thể có hành vi kỳ diệu (khởi tạo và / hoặc cập nhật), không chỉ TIMESTAMP và chỉ có tối đa một cột, hãy xem Khởi tạo và Cập nhật Tự động cho TIMESTAMP và DATETIME :

Bạn có thể thay đổi câu lệnh CREATE TABLE của mình trong trường hợp MySQL 5.6.5 hoặc mới hơn thành:

CREATE TABLE IF NOT EXISTS `article` (
  `article_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `url` VARCHAR(255) NOT NULL,
  `title` VARCHAR(255) NOT NULL,
  `date_from` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Set the article as new or featured from a datetime.',
  `date_to` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Set the article as new or featured to a datetime.',
  `backdated_on` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'The manual datetime that is modified or input by the user.',
  `created_on` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'The permanent datetime when the article is created.',
  `updated_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'The datetime when the article is updated on.',
  PRIMARY KEY (`article_id`, `parent_id`, `template_id`),
  UNIQUE INDEX `url_UNIQUE` (`url` ASC))
ENGINE = MyISAM
AUTO_INCREMENT = 66
COMMENT = 'Entity that holds the article with one-to-one properties.';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nhập dữ liệu vào cơ sở dữ liệu mysql thông qua bàn làm việc mysql?

  2. CHÈN MYSQL hoặc CẬP NHẬT NẾU

  3. Cảnh báo được đưa ra bằng cách chèn mã unicode 4 byte vào mysql

  4. Sau khi cập nhật Windows 10 1803, chương trình của tôi không thể mở ổ cắm khi chạy từ chia sẻ mạng

  5. Node.js và mysql Callback:truy vấn trong cuộc gọi lại truy vấn