アプリ版:「スタンプのみでお礼する」機能のリリースについて

CREATE TABLE media (
id INT DEFAULT 0 primary key,
media_name VARCHAR DEFAULT '',
others text DEFAULT '',
regis_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_date TIMESTAMP
);

をMySQL 5.0.77で実行したところ

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
regis_date TIMESTAMP,
update_date
)' at line 3

のエラーが出てきてしまいます

しかしMySQLを使い始めたばかりで今一理解が出来ず
また、 text DEFAULT '' を使った他のテーブルは作成できています

どこがおかしいのか教えていただけませんでしょうか、お願いします

A 回答 (4件)

提示されたcreate table文は、実際に使っているものでしょうか?



当方、MySQL 5.1を使っていますが、MySQL 5.0でも使用できない構文を多数使っているように見受けられます。

create table文そのものの話より、どういうデータを管理したいか、どういう操作をしたいかを提示して、アドバイスをもらった方がいいように思います。

次の項目は、MySQL 5.0でも指定できないはず
(1)text型には、default句を指定できない
(2)varcharの長さの省略はできない

timestamp型は、MySQL独自の動作をすることは、他の回答者さんからも指摘済み。timestamp型を複数定義していると、最初のtimestamp型が自動更新されるなど、いろいろな独自の動作をします。
MySQLの内部仕様をいろいろ探るより、どういうデータを持ち、どういう操作をしたいのかを提示し、アドバイスをもらった方が意味があると思います。

>d INT DEFAULT 0 primary key

こんなdefaultの設定も、普通はしないでしょう。
    • good
    • 0

>TIMESTAMPは1テーブルの中に1つしか設定できませんよ


自分もどこかでそんな内容のコメントを見た気がするのですが、
リファレンスに、(5.0は日本語のが見あたらない・・)
http://dev.mysql.com/doc/refman/5.0/en/timestamp …
>CREATE TABLE t (
> ts1 TIMESTAMP DEFAULT 0,
> ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
> ON UPDATE CURRENT_TIMESTAMP);

という例があるので、問題ないのではないかと思います。
DEFAULT CURRENT_TIMESTAMP を2項目以上に指定することはできないっぽいです。

で、質問のSQLのどこが問題なのかは・・ちょっと分かりません。すみません。
    • good
    • 0

TIMESTAMPは1テーブルの中に1つしか設定できませんよ


(2つ設定しても同じデータが格納されるので意味がないから?)
    • good
    • 0

VARCHAR にサイズがありません


VARCHAR (255)なりなんなりのサイズをいれると
作成できると思います。
    • good
    • 0

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