- ベストアンサー
エラーが発生しているSQL文を修正したい
- phpMyAdmin を使って以下のSQL文を記載してテーブルの追加をしたいが、エラーが発生している。
- MySQLのバージョンはMySQL 5.0.45であり、文法的にどこか間違っているのだろうか?
- ご教授いただけると幸いである。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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を実行するのもいいでしょう。
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
詳しく見てないですが。 MySQLでは、表の列定義で、「without time zone」といったタイムゾーンの指定を実装していません。 また、MySQLでは、timestamp型には任意の日時を格納するのでなく、値を入れなければ勝手にMySQLが日時を入れる仕様になっています。もし、任意の日時を入れたい場合は、datetime型を使用してください。
補足
テキストを詳しく見ると phpPgAdmin (Postgre)のプログラムのようです。 上記のデータを MySQLに対応させるには、どのように書き換えればいいでしょうか? ご多忙のところ恐縮ですがご指導のほど 宜しくお願いいたします。
お礼
そうですね。丸投げはよくないですね。 全体のことを考えると やはり PostgreSQLの定義に従って 行こうと思います。 ありがとうございました。