こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

テーブルが作成できない

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 '' を使った他のテーブルは作成できています

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

投稿日時 - 2011-05-19 14:03:27

QNo.6748459

すぐに回答ほしいです

質問者が選んだベストアンサー

提示された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の設定も、普通はしないでしょう。

投稿日時 - 2011-05-21 03:01:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

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

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

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

投稿日時 - 2011-05-19 17:04:27

ANo.2

TIMESTAMPは1テーブルの中に1つしか設定できませんよ
(2つ設定しても同じデータが格納されるので意味がないから?)

投稿日時 - 2011-05-19 16:26:58

ANo.1

VARCHAR にサイズがありません
VARCHAR (255)なりなんなりのサイズをいれると
作成できると思います。

投稿日時 - 2011-05-19 15:42:47

あなたにオススメの質問