MySQLのTIMESTAMPに関する変更

27 3月

ubuntu16 から ubuntu20 へのサーバーの移行を準備しています。と言っても、期限が迫っているので、もう準備とは言えない。

MySQL の バージョンが ubuntu16 では 5.7.33 だったのが、ubuntu20 では 8.0.23 となっています。プログラムを移している中で気づいたのですが、時刻がデータベースに記入されなくなっていました。例をあげると ubuntu16 では下記のように書いてテーブルを作っていたものがありました。

create table if not exists `テーブル名` (id int auto_increment primary key,  time TIMESTAMP, name text, realName text, thread text, filename text, movie longblob, display text)

書き込むときは下記のような感じでした。id と time のところは何も指定せず自動的に値が挿入されます。

INSERT INTO `テーブル名` (name, realName, thread, filename, movie, display) VALUES ('ある値', 'ある値', 'ある値', 'ある値', 'ある値', 'ある値')

同じように ubuntu20 でやってみると動きません。time のところが null になります。もともとの書き方がどうなのかというのもあるかもしれませんが、下記のように変更しました。

create table if not exists `テーブル名` (id int auto_increment primary key,  time datetime DEFAULT CURRENT_TIMESTAMP, name text, realName text, thread text, filename text, movie longblob, display text)

アップデートするときに時刻が変更されるような設定もあるようです。それは今回は必要ない。記入のところは特に変更しませんでした。