MySQL: DATETIME型はデフォルトで固定値しか使えないからTIMESTAMP型を使ったよ

勉強の為に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名以下の商店、会社、団体様、または個人様向け  

 


Djembe&vocal
Kackey@dabigtree

Yamandara



[大阪・千里のちいさいホームページ制作屋さん『太陽の塔が地元』]

大阪市内、北摂エリアにあるサロン、美容室、歯医者、カフェ、バー、など10名以下の商店、会社、団体様、または個人様向けのサイトを制作いたします☆