電子書籍の厳選無料作品が豊富!

ローカルで作成したMySQLのテーブルデータをサーバーに移したいのですが、スムーズにいかずにいます。(ローカルのphpMyAdminよりエクスポートした、sqlファイルを編集したものをサーバー側のphpMyAdminよりインポートしています。)

特に、登録日と更新日のカラムのCURRENT_TIMESTAMPに問題があるようで、下記のようなメッセージがでます。2つは無理とのことです。

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause  

しかし、ローカルではちゃんと定義されているので、なぜサーバーになると無理なのかがわかりません。

このようなSQLの文章になっていますが、どのように書けば、2つのCURRENT_TIMESTAMPの存在が可能になりますでしょうか?
よろしくお願いましす。

CREATE TABLE IF NOT EXISTS `comment` (
`comment_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`post_id` int(11) DEFAULT NULL,
`content` text CHARACTER SET utf8,
`reg_tim` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`upd_tim` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;

A 回答 (1件)

バージョンやエンジンによるかもしれませんが


もともとタイムスタンプは1テーブルに1カラムしか許可されていませんでした
いまは複数カラムのタイムスタンプが設定できるようですが
defaultにCURRENT_TIMESTAMPを指定できるのは1カラムだけなので
他のカラムにはdefault 0でよいので設定をかいておくとよいでしょう
(default値を指定しないとCURRENT_TIMESTAMPを指定しようとするみたい)
    • good
    • 0
この回答へのお礼

解決しました。ありがとうございます。phpMyAdminの設定になんらかの問題があるのかと思っていたので、まったく違う場所ばかり検索していました。おかげで助かりました。♪

お礼日時:2016/05/13 00:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!