MySQLでのtimestampとの死闘。ついに完結
MySQLで死闘繰り広げた話
この記事での出来事なのだが、全くうまく行かなかった。。。
あれは悪夢だった、テーブルを1つ作成するのに2時間くらいかけた
何が起きたかというと
MySQLにおいて以下のコードでCMS開発用のカテゴリーテーブルを作ろうとしていた。
CREATE TABLE test.org_category (
category_id INT(2) NOT NULL PRIMARY KEY COMMENT 'カテゴリID',
name VARCHAR(200) NOT NULL COMMENT '名前',
url VARCHAR(200) NOT NULL COMMENT 'URL',
create_date TIMESTAMP NOT NULL default 0 CURRENT_TIMESTAMP COMMENT '作成日',
`update-date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日'
);
しかしひたすら出続けるエラー。
エラー分には、2割構文エラーで他はずっと、timestampについて文句を言ってくる文章だった。
どうしようもなくなった俺は、timestampについてググりまくった。
すると下記の記事が出てきた
(ちなみにこれ見つけるのに1時間くらい)
どうやら、
current_timestamp を設定できるのは1カラムだけ
っぽい。
って事でとりあえず、1つだけcurrent_timestampを消してみた。
かと言ってそれで解決するわけでもないので、じっくりと読んでみた。
すると、デフォルト値を片方につければいいという話だった。
「じゃあ、デフォルト値をテキトーにかますか…」と思った俺は、defalt値をとりあえず影響があんまり出なさそうな0にしてみた⏬
CREATE TABLE test.org_category (
category_id INT(2) NOT NULL PRIMARY KEY COMMENT 'カテゴリID',
name VARCHAR(200) NOT NULL COMMENT '名前',
url VARCHAR(200) NOT NULL COMMENT 'URL',
create_date TIMESTAMP NOT NULL default 0 COMMENT '作成日',
`update-date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新日'
);
すると… Query OK, 0 rows affected (0.01 sec)
きたあああああああああああああああああああああああああああああ
涙が出そうになった。
この一文を出すためだけに2時間苦闘していたのだ。エンジニアの方々...お疲れ様です。