人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

cakephpとmysqlのdatetimeについて。
cakephpアプリではテーブルにdatetime型の「created」「modified」というフィールドを作っておくと初期値に何の指定がなくても自動的にデータ挿入時刻と更新時刻がそれぞれ設定されるという認識でした。ローカル環境ではそれが正常に機能していました。

ところがレンタルサーバーに環境を移すと機能しなくなりました。レンタルサーバーのmysqlのバージョンのせいかもしれません。mysqlのバージョンをphpinfo()で確認したところ4.0でした(ローカルでは5.0)。

具体的な現象です。まずdatetime型のフィールドの初期値が勝手に「0000-00-00 00:00:00」となっていること(ローカル環境では何も設定されていなかった)。またすべてのデータで「created」にも「modified」にもこの初期値である「0000-00-00 00:00:00」が設定されてしまうことです。レンタルサーバーの環境でもローカル環境のように自動でデータ更新時刻が設定されてほしいのです

●質問者: dedara
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:00 CakePHP MySQL アプリ データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

まずdatetime型のフィールドの初期値が勝手に「0000-00-00 00:00:00」となっていること

確認ですが、レンタルサーバ側のテーブルの datetime型のフィールドについて、NULLを許可しており、default値がNULLになるように create していますか?

◎質問者からの返答

NULLは許可していません。createというのはcreate tableのことでしょうか。create table時にはdefault値は設定してないです。nullを許可してないのでdefault値はnullにもできないですね。


「初期値が勝手に「0000-00-00 00:00:00」となる」と書いたのはローカル環境だとdatetimeの初期値「設定なし」が可能だったからです。レンサバで設定なしにすると勝手に「0000-00-00 00:00:00」の値が入ります


2 ● pahoo
●35ポイント

#1のコメント:

createというのはcreate tableのことでしょうか。

はい、そうです。


ブログデータベースの作成」の中で、created と modified は default NULL になっているので、こうした方がいいのかなと考えました。

ただ、「created と modified」では、updated のみ NULL にするような表記がなされていますね。

◎質問者からの返答

createdとmodifiedのフィールドの初期値をNULLにしてみましたが一緒で「0000-00-00 00:00:00」になります。


それから今気付いたのですがNOT NULLのときも初期値NULLのときも「modified」については更新時に更新時刻が入っていました。なので問題はデータInsert時の「created」だけでした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ