勉強の為にMySQLでいろいろテーブルを作成していた時の足跡。
DATETIMEにデフォルトでNULLを入れるとエラーが出ました。
エラー
#1067 – Invalid default value for ‘created’
実行した SQL:
ALTER TABLE `comments` ADD `body` TEXT NOT NULL ,
ADD `post_id` INT NOT NULL ,
ADD `created` DATETIME NOT NULL DEFAULT NULL ,
ADD `modified` DATETIME NOT NULL DEFAULT NULL
そこでDATETIME型からTIMESTAMP型に変更しました。
比較すると
TIMESTAMP
- TIMESTAMP型で使える範囲:1970年 〜 2037年
- 4 バイト使う
- デフォルトで更新時刻をインサートすることができる
DATETIME
- DATETIME型で使える範囲:1000年 〜 9999年
- 8 バイト使う
- デフォルト値は固定値じゃないとダメ
以下のように、TIMESTAMPにデフォルト値CURRENT_TIMESTAMPを設定します。
ALTER TABLE `comments` ADD `body` TEXT NOT NULL ,
ADD `post_id` INT NOT NULL ,
ADD `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
ADD `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
意図した通りデータをインサートした時に、createdフィールドとmodifiedフィールドへ現在時刻が挿入されました。
◆クローズドでしか伝えられない情報はメールマガジンで発信しています。
◆西アフリカの太鼓・ジャンベを叩いて歌うシンガーソングライターKackey@dabigtree公式ホームページ
◆Kackey@dabigtreeの公式Facebookページ
◆家具・インテリア・観葉植物による空間コーディネート
◆小規模ホームページ作ってます!
大阪市内、北摂地域にあるサロン、美容室、歯医者、カフェ、バー、など10名以下の商店、会社、団体様、または個人様向け
Kackey@dabigtree