LoginSignup
1
0

More than 1 year has passed since last update.

mySqlではtimestampにNullを入れられない

Posted at

初投稿になります。
Udemyのこちらの講座で一通り勉強したので、仕事であったら便利そうなWebアプリを作ってみようと思っています。
プログラミングの勉強を始めたきっかけはいつか別記事で書きたいと思っています。

つくろうとしている物

弊社には顧客管理や見積請求作成ソフトがありデータがリンクするようになっているのですが、リース器具管理だけ独立してexcelデータで、そこの管理を任されているので業務効率化とプログラミングの勉強を兼ねてリース管理アプリを作成しようと思いました。

躓いたところ

  1. リース商品は契約開始日や更新日、解約日など日付を入力する部分がたくさんあります。 講座を写径しながら、自分で作りたいものに作り替えいくとエラーにぶち当たりました。 エラーに慣れていなくてまったく読みもせずに、どこを写し間違えたかと見直し→書き直し→migrateをループしていました。ある程度したらエラーアレルギーも収まり、ちょっとずつ読めるようになりました。(これとっても不思議!)記事にするつもりはなかったのでエラー文は残してないのですが、テーブル名とデータの型名、NOT NULL ABLEが読み取れてTIMESTAMP型にNullは入れられないことに気づきました。
  2. TIMESTAMPにNULLが入れられないということはMySqlでググれば解決策見つかりそうと判断。ついでにphpで書いていると思ったので(今現在も何の言語を書いているかよくわかっていない)「TIMESTAMP PHP NULL ABLE」で検索してもズバリな記事は見つからず途方に暮れてしまいました。

->nullable()で解決

一人で気ままに学習するいいところとして、好きな時に切り上げられる点だと思います。
息抜きに散歩していると「laravelで検索したらわかるんじゃね?」と関係ある要素を考えれば至極当たり前なことに気づき、わくわくしながらググるとサクッと答えが出てきました!といっても日本語の情報ではなくEnglishだったので記事にさせていただきました。

$table->timestamp('カラム名')->nullable();

このように書くことによりNullを許可したTIMESTAMP型でカラムを作ることができます。

あとがき

なぜ、TIMESTAMPにNullが許可されていないのか。
MySqlのTIMESTAMP型には2038年問題があるかららしいです。
Nullを許可する情報が少なかったのはこのせいなのかもしれません。
せっかく解決策が分かったけど、DATETIME型で作り直そうかなw

プログラミングもマークダウンもブログを書くことも初心者なのでこうしたほうがいいとか、間違っている点などあればご指摘お願いします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0