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.6
と5.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: []
すべてのこれらのバージョンで動作し、クエリする必要がありますか?
これはJavaと何が関係していますか? –
created_atをTIMESTAMPに変更し、最初のレコードINSERTに入力します。後ろ向きの論理ではないですか? –