質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

3521閲覧

mysqlにおいてtimestamp型のデフォルト値が効かない

redux

総合スコア19

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2020/08/15 04:48

A5:SQL mk-2にて以下の設定でカラムが登録されています。
該当カラムを空にしてレコードを追加すると値がNULLになってしまいます。
望む挙動としては、現在時刻を登録してほしいです。

コマンドプロンプトにてmysql --versionを打つと以下が表示されます。
mysql Ver 8.0.20 for Win64 on x86_64 (MySQL Community Server - GPL)

db

1 //A5:SQL mk-2で該当テーブルのソース表示 2 `col_name` timestamp NULL DEFAULT CURRENT_TIMESTAMP,

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

a5m2が明示的にNULLを登録しようとしてるからじゃないですかね。

そういったカラムは普通NotNull制約入れるので、以下のような定義になるはずなのですが、、、

col_name timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

ご参考までに公式から引っ張ってきたテーブルですが、

mysql> CREATE TABLE t -> ( -> ts1 TIMESTAMP NULL DEFAULT NULL, -> ts2 TIMESTAMP NULL DEFAULT 0, -> ts3 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP -> ); Query OK, 0 rows affected (0.03 sec) mysql> insert into t values(null,null,null); Query OK, 1 row affected (0.01 sec) mysql> select * from t; +------+------+------+ | ts1 | ts2 | ts3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+ 1 row in set (0.00 sec) mysql> insert into t (ts1) values(null); Query OK, 1 row affected (0.01 sec) mysql> select * from t; +------+---------------------+---------------------+ | ts1 | ts2 | ts3 | +------+---------------------+---------------------+ | NULL | NULL | NULL | | NULL | 0000-00-00 00:00:00 | 2020-08-15 06:12:20 | +------+---------------------+---------------------+ 2 rows in set (0.01 sec)

https://dev.mysql.com/doc/refman/5.6/ja/timestamp-initialization.html

投稿2020/08/15 06:17

szk.

総合スコア1400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

redux

2020/08/15 06:33

回答ありがとうございます。 実は私もそう思い、not nullで設定しなおしてみたのですが、 NULLで登録しようとすると #23000 column 'col_name' cannot be null とエラー表示されてしまい登録することができませんでした。 ちなみに手打ちで入力しています。
redux

2020/08/15 06:42

すみません。 回答の意図を汲み取れていませんでした。 試したところ回答の通りでした。 A5SQL経由 → 0で登録するとdefault値が登録される。(しかし何故か時間が切り捨てられる) PDO経由 → defaultで登録すると値が登録される。 (時間も登録される) これで解決です。ありがとうございます。
szk.

2020/08/15 06:47

col_name timestamp DEFAULT CURRENT_TIMESTAMP, で設定するといけそうですが、 ツールの使い勝手のためにカラムの定義を変更するのは、あまりいただけないと思います。 以下参考までに mysql> CREATE TABLE t ( ts1 TIMESTAMP NULL DEFAULT NULL, ts2 TIMESTAMP NULL DEFAULT 0, ts3 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); Query OK, 0 rows affected (0.03 sec) mysql> insert into t values(null,null,null); Query OK, 1 row affected (0.00 sec) mysql> insert into t (ts1) values(null); Query OK, 1 row affected (0.00 sec) mysql> select * from t; +------+---------------------+---------------------+ | ts1 | ts2 | ts3 | +------+---------------------+---------------------+ | NULL | NULL | 2020-08-15 06:44:52 | | NULL | 0000-00-00 00:00:00 | 2020-08-15 06:44:56 | +------+---------------------+---------------------+ 2 rows in set (0.00 sec)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問