1. 程式人生 > >Mysql中datetime預設值'0000-00-00 00:00:00'無法建立問題

Mysql中datetime預設值'0000-00-00 00:00:00'無法建立問題

在使用Mysql時當建表語句中有以下語句時:
create_time DATETIME NOT NULL DEFAULT ‘0000-00-00 00:00:00’
則會出現以下的異常:
Invalid default value for ‘create_time’
解決方法:
根據@amanda_shuidi的指點:
是因為SQL_MODE的問題沒設定好,方案如下:
查詢當前資料庫的SQL_MODE
select @@sql_mode
得到以下結果:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
可以看到NO_ZERO_IN_DATE,NO_ZERO_DATE是DATE不能全部為0的原因,所以把模式中的NO_ZERO_IN_DATE,NO_ZERO_DATE去掉就可以了。
SET [SESSION|GLOBAL] sql_mode=’modes’
例項如下:
SET GLOBAL sql_mode=’ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
其中:SESSION只在當前會話中生效,GLOBAL為全域性生效。
笨拙的方法:
把語句改為以下就可以執行建立表
create_time

DATETIME NOT NULL DEFAULT ‘0000-01-01 00:00:00’

相關推薦

Mysqldatetime預設'0000-00-00 00:00:00'無法建立問題

在使用Mysql時當建表語句中有以下語句時: create_time DATETIME NOT NULL DEFAULT ‘0000-00-00 00:00:00’ 則會出現以下的異常: Invalid default value for ‘create_

mysql插入datetime預設0000-00-00時報錯

mysql設定欄位為datetime時,如果設定not null default '0000-00-00 00:00:00'會報錯Invalid default value for xxxxxx 解決

PreparedStatement設定mysqldatetime精確到時分秒

1.拿到當前時間 Date now = new Date(); mc.setCrtDate(now); mc.setLastUpdate(now); 2.插入時的操作 pstmt.setTimestamp(7, new Timestamp(m.getCrtDate().getTime

mysql5.7 datetime 預設為‘0000-00-00 00:00:00'無法建立問題解決

資料庫版本5.7.22 CREATE TABLE users (     id INT NOT NULL AUTO_INCREMENT,     name varchar(50) NOT NULL default '',     indate DATETIME NOT NU

解決:mysql timestamp默認0000-00-00 00:00:00 報錯

warn session amp 查看 war ref etime details tail 一. 問題的引出 我們在用mysql5.7創建表時,如果把timestamp(時間戳)的默認值設置為0000-00-00 00:00:00 的形式,將會產生一條報錯: `Re

資料庫 datatime型別預設 0000-00-00 00:00:00 錯誤

發現問題: 在開發的時候從將資料庫匯出想匯入另一個數據庫,執行sql檔案的時候報錯導致表不能全部匯入。 錯誤提示: Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘createTime

MySQLdatetime欄位的預設CURRENT_TIMESTAMP

今日個匯入一sql檔案,出現錯誤,指向sql中的datetime欄位,查了一下,發現是版本問題立馬查詢自己的MySQL版本,發現是5.1的,datetime設定預設為CURRENT_TIMESTAMP時,需要在5.6版本以上才可以,否則,還是老實用:timestamp型別,去

python預設json庫處理mysqldatetime,date型別不能序列化json的解決方案

今天處理mysql資料庫資料時,從資料庫中讀取了datetime和date型別。不幸運的是預設的json庫是不支援 datetime和date型別的序列化的。 #!/usr/bin/env python # -*- coding: utf-8 -*- """ Th

MySQLDATETIME、DATE和TIMESTAMP類型的區別

有一個 pda not mat date_add after () day format 一、DATETIME 顯示格式:YYYY-MM-DD HH:MM:SS時間範圍:[ ‘1000-01-01 00:00:00‘到‘9999-12-31 23:59:59‘] 二、DAT

Mysqldatetime和timestamp區別

sta mysql -m 時區 日期 timestamp 適應 tex 區別 DATETIME日期和時間的組合。支持的範圍是‘1000-01-01 00:00:00‘到‘9999-12-31 23:59:59‘。MySQL以‘YYYY-MM-DD HH:MM:SS‘格式顯示

AndroidSettings預設的設定

設定Settings的預設值有兩種方式 A. 在獲取是有一個介面可以進行預設值設定,當資料庫中查詢不到該值時,就會返回傳入的預設值。 public static int getInt(ContentResolver cr, String name, int def) {   

odoo開發筆記 -- 模型欄位定義設定預設

例如: company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env['res.company']._c

Atitit Spring事務配置不起作用可能出現的問題: .是否是資料庫引擎設定不對造成的【筆者就遇到了這個問題,由於筆者使用的是mysql資料,但是在建立表的時候引擎預設mysql引擎預設

Atitit Spring事務配置不起作用可能出現的問題:   .是否是資料庫引擎設定不對造成的【筆者就遇到了這個問題,由於筆者使用的是mysql資料,但是在建立表的時候引擎預設(mysql中引擎預設為MyISAM,是不支援事務操作的),需要修改為InnoDB,就可以支援事務操作了

mysqldatetime、date、timestamp資料型別的區別

1、datetime資料型別表示同時包含日期和時間。 mysql檢索並且以'YYYY-MM-DD HH:MM:SS'格式顯示datatime值,支援的範圍是'1000-01-01 00:00:00'

Ada語言寶書 #2: Ada 2005 受限型別 — 集合預設 標記

寶書 #2: Ada 2005 受限型別  — 集合中的<>標記 by Bob Duff—AdaCore Translator:Dongfeng.Gu 讓我們開始… 上週,我們提到Ada2005允許為受限型別提進行合聲明。這樣的一個集合必須用於初始

MySQL列的預設主鍵索引與自增 刪除增加與修改

1. 某些列不插入內容,值是多少?  自動填充NULL2. NOT NULL是幹嘛的?  不能為NULL型別,因為NULL型別查詢的時候需要加語句 IS NULL 或者IS NOT NULL  效率低,查詢速度慢,開發中我們一般不可以設定為預設的能插入NULL型別。  所以會使用NOT NULL來限制使用NU

關於Mysqldatetime 與 timestamp的區別

昨天在伺服器down了一個sql但是往mysql匯入時發現總是報錯 說是我的日期型別不符(之前是)datetime 型別的 之後又改成了 date 型別 ,再次匯入時又是相同的錯誤   好奇心下就上網查了點資料    DATETIME 與

設定mysql時間戳預設(TIMESTAMP)

MySQL目前不支援列的Default 為函式的形式,如達到你某列的預設值為當前更新日期 與時間的功能,你可以使用TIMESTAMP列型別,下面就詳細說明TIMESTAMP列型別 TIMESTAMP的變體 1,TIMESTAMP DEFAULT CURRENT

記錄問題:mysqldatetime型別欄位在後臺讀取與前端展示

1.資料庫欄位型別為datetime,model裡:@Column(name = "createtime", length = 20) private Date createTime;2.兩種將資料傳到前端的方法方法一:List<Map<String, Objec

獲取伺服器的時間新增到資料庫預設設定)

獲取伺服器的時間新增到資料庫中作為使用者使用的起始時間,不想在程式中單獨實現這個功能顯得繁瑣。所以便在搭建資料庫的過程中找到了這個小技巧。 使用:SQL Server 列屬性——預設值或繫結  實現: 在資料表中新增使用者上機資訊時,資料庫自動捕獲伺服器時間到表中。 配圖