Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menetapkan nilai default bidang sebagai '0000-00-00 00:00:00'?

Penyebab kesalahan:mode SQL

Anda dapat mengatur nilai default dari DATE , DATETIME atau TIMESTAMP ke nilai "nol" khusus '0000-00-00' sebagai tanggal dummy jika mode sql mengizinkannya. Untuk versi MySQL yang lebih rendah dari 5.7.4 ini diatur oleh mode NO_ZERO_DATE, lihat kutipan dokumentasi :

Selain itu, mode ketat harus diaktifkan untuk melarang nilai "nol":

Mulai MySQL 5.7.4 ini hanya bergantung pada mode ketat:

Periksa versi dan mode SQL

Jadi, Anda harus memeriksa versi MySQL Anda dan mode SQL server MySQL Anda dengan

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

Aktifkan INSERT

Anda dapat mengatur sql_mode untuk sesi Anda dengan SET sql_mode = '<desired mode>'

SET sql_mode = 'STRICT_TRANS_TABLES';   

Rentang yang valid untuk DATETIME

Rentang yang didukung untuk DATETIME adalah

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

jadi nilai DATETIME minimal yang valid adalah '1000-01-01 00:00:00'.
Saya tidak akan merekomendasikan untuk menggunakan nilai ini.

Catatan Tambahan

Sejak MySQL 5.6.5 semua TIMESTAMP dan DATETIME kolom dapat memiliki perilaku ajaib (menginisialisasi dan/atau memperbarui), tidak hanya TIMESTAMP dan hanya satu kolom paling banyak, lihat Inisialisasi dan Pembaruan Otomatis untuk TIMESTAMP dan DATETIME :

Anda dapat mengubah pernyataan CREATE TABLE Anda dalam kasus MySQL 5.6.5 atau lebih baru ke:

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. Kueri Sql/Doktrin untuk menemukan data dengan banyak kondisi dengan asosiasi Banyak ke Banyak

  2. Doktrin:TENTANG PEMBARUAN KUNCI DUPLIKAT

  3. Menghapus baris duplikat dari tabel

  4. Menjalankan skrip PHP dari pemicu MySQL

  5. Terhubung ke layanan web/API di MySQL?