勉強の為に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フィールドへ現在時刻が挿入されました。
[大阪・千里のちいさいホームページ制作屋さん『太陽の塔が地元』]
大阪市内、北摂エリアにあるサロン、美容室、歯医者、カフェ、バー、など10名以下の商店、会社、団体様、または個人様向けのサイトを制作いたします☆