2016-08-04 13 views
-1

Caused by: java.sql.SQLException: Invalid default value for 'updated_at' Query: CREATE TABLE IF NOT EXISTS saved_query (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) NOT NULL,description varchar(255) DEFAULT NULL,query longtext,params_json longtext,created_at timestamp DEFAULT CURRENT_TIMESTAMP,updated_at timestamp NOT NULL, PRIMARY KEY (id)) Parameters: []無効なデフォルト値

CREATE TABLE IF NOT EXISTS saved_query 
( 
id   INT(11) NOT NULL auto_increment, 
name  VARCHAR(255) NOT NULL, 
description VARCHAR(255) DEFAULT NULL, 
query  LONGTEXT, 
params_json LONGTEXT, 
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
updated_at TIMESTAMP NOT NULL, 
PRIMARY KEY (id) 
) 

MySQLバージョンは5.7.13です。上記のクエリは、5.65.5のバージョンで動作します。次のクエリは、5.7に動作しますが、<5.7のバージョンではない:

CREATE TABLE IF NOT EXISTS saved_query 
    ( 
    id   INT(11) NOT NULL auto_increment, 
    name  VARCHAR(255) NOT NULL, 
    description VARCHAR(255) DEFAULT NULL, 
    query  LONGTEXT, 
    params_json LONGTEXT, 
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (id) 
) 

エラー5.6である:

Caused by: java.sql.SQLException: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause Query: CREATE TABLE IF NOT EXISTS saved_query (id int(11) NOT NULL AUTO_INCREMENT,name varchar(255) NOT NULL,description varchar(255) DEFAULT NULL,query longtext,params_json longtext,created_at timestamp DEFAULT CURRENT_TIMESTAMP,updated_at timestamp DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id)) Parameters: []

すべてのこれらのバージョンで動作し、クエリする必要がありますか?

+0

これはJavaと何が関係していますか? –

+0

created_atをTIMESTAMPに変更し、最初のレコードINSERTに入力します。後ろ向きの論理ではないですか? –

答えて

-1

TIMESTAMPNULLこと、およびMySQLの列にDEFAULT CURRENT_TIMESTAMPを追加することはできません。しかし、1列の幅はDEFAULT CURRENT_TIMESTAMPです。ちょうど'0000-00-00 00:00:00'を使用してください。

CREATE TABLE IF NOT EXISTS saved_query 
    ( 
    id   INT(11) NOT NULL auto_increment, 
    name  VARCHAR(255) NOT NULL, 
    description VARCHAR(255) DEFAULT NULL, 
    query  LONGTEXT, 
    params_json LONGTEXT, 
    created_at TIMESTAMP DEFAULT '0000-00-00 00:00:00', 
    updated_at TIMESTAMP DEFAULT '0000-00-00 00:00:00', 
    PRIMARY KEY (id) 
) 
+0

これがなぜ機能するのか説明してもらえますか? – prongs

+0

動作しません。エラー: 'エラー: 'created_at'のデフォルト値が無効です SQLState:42000 ErrorCode:1067' – prongs

+0

@prongs更新された回答を表示 –

関連する問題