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

解決済みの質問

phpMyAdmin を使って以下のSQL文を記載してテープルの追加を

phpMyAdmin を使って以下のSQL文を記載してテープルの追加をしたいのですが
エラーがでます。

phpMyAdminの操作方法やSQLの知識も乏しいので EC-CUBEのテキストに従って操作しているのですが、、、、。

------- ここから ----------

CREATE TABLE dtb_contact (
contact_id serial NOT NULL,
name text,
name_f text,
zip01 text,
zip02 text,
pref integer,
addr01 text,
tel01 text,
tel02 text,
tel03 text,
email text,
message text,
create_date timestamp without time zone,
del_flg integer DEFAULT 0,
customer_id integer,
status integer DEFAULT 0
);

ALTER TABLE ONLY dtb_contact ADD CONSTRAINT dtb_contac_contact_id_key UNIQUE (contact_id);

-----ここまで-------------


実行すると下記のようなエラーがでます

▼MySQLのメッセージ: ドキュメント
#1064 - 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 'without time zone,
del_flg integer DEFAULT 0,
customer_id in


MySQL の バージョンは MySQL 5.0.45なのですが
文法的にどこか間違っているのでしょうか?


ご多忙のところ恐縮ですが
ご教授いただければ幸いでございます。

投稿日時 - 2010-10-02 17:16:04

QNo.6222777

困ってます

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

PostgreSQLを使えばいいのでは?

「PostgreSQLを前提とした記事」を参考にしながらPostgreSQLを使って、環境の違いなどでなかなか思うようにできないという人もすくなくありません。
「MySQLを前提とした記事」を参考にしながらMySQLを使って、環境の違いなどでなかなか思うようにできないという人もすくなくありません。

提示されたPostgreSQLの定義について、どこまで同等にする必要があるのか分かりませんが、MySQLで定義できるように変えることはできます。
しかし、その後のデータの挿入、検索、さらにはアプリも動かしたいのでしょうから、次々と問題が生じるであろうことは、質問の仕方から容易に想像できます。
さらに、自分で調べたり試行錯誤しているといったことが、質問や補足を見てまったく伺えません。
そういった丸投げを繰り返すと、アドバイスしてくれる人がいなくなるかも知れません。

MySQLのマニュアル
http://dev.mysql.com/doc/refman/5.1/ja/index.html



取りあえずMySQLで表定義するには、以下を変更してください。

contact_id serial NOT NULL,



contact_id INT PRIMARY KEY AUTO_INCREMENT,


create_date timestamp without time zone,



create_date DATETIME,


PRIMARY KEYとしたことで、一意性は保証されるという点ではALTER TABLEでの制約追加は必要ありません。ただし、参照しているテキストに制約の追加や削除の記載があり、それに従って操作したいなら、ALTER TABLEを実行するのもいいでしょう。

投稿日時 - 2010-10-08 16:41:04

お礼

 そうですね。丸投げはよくないですね。

全体のことを考えると やはり PostgreSQLの定義に従って
行こうと思います。

ありがとうございました。

投稿日時 - 2010-10-08 23:13:48

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

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

回答(2)

ANo.1

詳しく見てないですが。

MySQLでは、表の列定義で、「without time zone」といったタイムゾーンの指定を実装していません。
また、MySQLでは、timestamp型には任意の日時を格納するのでなく、値を入れなければ勝手にMySQLが日時を入れる仕様になっています。もし、任意の日時を入れたい場合は、datetime型を使用してください。

投稿日時 - 2010-10-02 19:12:51

補足

テキストを詳しく見ると phpPgAdmin (Postgre)のプログラムのようです。

上記のデータを MySQLに対応させるには、どのように書き換えればいいでしょうか?

ご多忙のところ恐縮ですがご指導のほど
宜しくお願いいたします。

投稿日時 - 2010-10-02 22:18:33

あなたにオススメの質問