• ベストアンサー
  • すぐに回答を!

PostgreSQLからMySQLへ変換

現在ECサイトに追加カスタマイズ機能を導入したいと考えているのですが、 その際の使用コードが以下のようにPostgreSQLの記載となっており、 使用しているphpMyAdminにてSQLコードを入力するとエラーとなってしまいます。 ↓PostgreSQLコード CREATE TABLE dtb_bookmark ( bookmark_id serial NOT NULL, customer_id integer NOT NULL, product_id integer NOT NULL, memo text, create_date timestamp without time zone NOT NULL, update_date timestamp without time zone NOT NULL, del_flg integer ); ALTER TABLE ONLY dtb_bookmark ADD CONSTRAINT dtb_bookmark_pkey PRIMARY KEY (bookmark_id); COMMENT ON TABLE dtb_bookmark IS 'お気に入り情報'; エラーはtimestamp型とALTER以降の文で発生致します。 mysql文にて解釈させるにはどのように変更したらよろしいのでしょうか? 使用mysqlバージョンはMySQL 4.1.21です。 アドバイスなど頂けましたら幸いです。 よろしくお願い致します。

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • 回答No.1

ここは、自分の代わりに誰かに調べてもらったり、何かを作ってもらうサイトではありません。自分なりに調べた内容を示し、具体的に分からない部分を示すことがルールです。もし、誰かに調べてもらったりといったことをお望みなら、はてなの人力検索などを利用しましょう。 とはいいつつ、すぐに分かったところは次のようなところです。 serial型に関しては、PostgreSQLの独自機能なので、他RDBMSに変更する場合は、DDL(定義)だけでなくDML(操作)も修正が入る可能性が高い思います。 (1)データ型のserialは、PostgreSQLの独自機能  →MySQLでは、auto_incrementという似た機能がある。   insertなどでnextvalといったserial型の独自関数を使っている場合は、それもPostgreSQLの独自機能なので、MySQLでは使えない (2)without time zoneは、PostgreSQLの独自機能 (3)ALTER TABLEのONLYも、PostgreSQLの独自機能 (4)COMMENT文は、MySQLでは未実装。 create tableに、comment句があり、それで代用できる。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

>chukenkenkou様 利用規約等確認せずに焦って投稿してしまいました。 頂いたアドバイスを元に、自分なりにmysqlを勉強したいと思います。 ご迷惑お掛けしました。

関連するQ&A

  • PostgreSQLのテーブル構造を取得したい

    現在PostgreSQLとPHP5を利用してアプリケーションを開発しております。 PHPにて現在すでに存在するPostgreSQLのテーブルの定義情報を取得するにはどうすればよろしいでしょうか。テーブルの定義情報は下記のようにSQLのCREATE文で取得したいと思っております。 CREATE TABLE favorite ( code serial NOT NULL, reg_date timestamp without time zone NOT NULL DEFAULT now(), update_date timestamp without time zone, title text, url text, u_id character varying(20) NOT NULL, enabled_flag smallint NOT NULL DEFAULT 1, CONSTRAINT web_favorite_pkey PRIMARY KEY (fv_code) ) 何卒よろしくお願いいたします。

  • 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なのですが 文法的にどこか間違っているのでしょうか? ご多忙のところ恐縮ですが ご教授いただければ幸いでございます。

    • ベストアンサー
    • MySQL
  • create table時のdefaultにLAST_INSERT_ID()を使う

    いつもお世話になってます。 現在、postgreSQL→MySQLへの移行作業をしようとしています。 型が微妙に違う等の修正を手作業で行っているのですが、 postgreSQLの下記の型(default値)をMySQLでどう設定してよいかわからずに困っています。 ■postgreSQLのcreate文 CREATE TABLE test_tab ( id_i serial NOT NULL, parent_id integer DEFAULT currval('inquiry_tab_id_i_seq'::text) ) 下記のような感じでMySQLで出来るかなと思ったらうまく出来ませんでした。 ■試してみたMySQLのcreate文 CREATE TABLE test_tab ( id_i int primary key not null auto_increment, parent_id integer DEFAULT LAST_INSERT_ID() ) どう設定すれば、同じ設定のテーブルが作れるのか、どなたかご教授願えませんでしょうか。 よろしくお願いします。

  • Mysql(5.1)を利用してWebアプリケーションを作成しているので

    Mysql(5.1)を利用してWebアプリケーションを作成しているのですが、ユーザマスタのテーブルを作成する時に、カラム ユーザIDにAUTO_INCREMENTにした場合、他のカラム 登録者ユーザID ENTRY_USER_ID、更新ユーザID UPDATE_USER_IDにもAUTO_INCREMENTを指定したいのですがエラーになってCREATEできません。 エラーが表示されます。 ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key ぐぐって見たのですが、プライマリーキーなどといっしょに指定するみたいなのですが、SQL文は、create table USER_MST ( USER_ID INTEGER(10) AUTO_INCREMENT, NICKNAME VARCHAR(12) NOT NULL, ENTRY_USER_ID INTEGER(10) AUTO_INCREMENT, UPDATE_USER_ID INTEGER(10) AUTO_INCREMENT, ENTRY_YMD TIMESTAMP NOT NULL, UPDATE_YMD TIMESTAMP NOT NULL, DELETE_YMD TIMESTAMP NULL, PRIMARY KEY ( USER_ID ,ENTRY_USER_ID,UPDATE_USER_ID) )ENGINE=InnoDB CHARACTER SET UTF8; を実行しているのですが、うまくいきません。 ご教授お願いします

  • postgresのtimestampの『witho

    postgresのtimestampの『without time zone』と『with time zone』の違いを教えてください。 timestamp [ (precision) ] without time zone timestamp [ (precision) ] with time zone PostgreSQL 9.6.1文書を読んでみましたがイマイチ理解できていません。 https://www.postgresql.jp/document/9.6/html/datatype-datetime.html#datatype-datetime-input ざっくり何が違って、どういう用途で使い分けるのか教えてください。

  • MySQL table editorについて

    このエラーについて教えてください! Error while executing query CREATE TABELE 'depot_development','products'( 'id'INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ~~~ ) ENGINE = lnnoDB; MySQL Error Number 1005 Can't create table '.\depot_development\products.frm'(errno: 121)

    • ベストアンサー
    • MySQL
  • MySQLでエラーがでます

    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 '"8cb2237d0679ca88db6464eac60da96345513964", created"2011-10-05 15:16:04"' at line 1 PHPをブラウザで開いて動作確認すると上記のようにエラーがでてしまいます。 dbはこんな感じで作りました。 CREATE TABLE `class_orms`.`members` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL , `password` VARCHAR( 100 ) NOT NULL , `created` DATETIME NOT NULL , `modified` TIMESTAMP NOT NULL ) ENGINE = MYISAM ; CREATE TABLE `class_orms`.`posts` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `message` TEXT NOT NULL , `member_id` INT NOT NULL , `reply_post_id` INT NOT NULL , `created` DATETIME NOT NULL , `modified` TIMESTAMP NOT NULL ) ENGINE = MYISAM ; SQL側の1行目でエラーがあるということなのでしょうか? どなたか回答よろしくお願いします。 動作環境------------------- Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 phpMyAdmin バージョン情報: 3.2.4

    • ベストアンサー
    • MySQL
  • MySQL データベースを選択したい

    こんにちは。 SQLの初歩的な操作で躓いています。 MySQL 3.23.51-nt (WondowsXP) を使用しています。 PHPベースの掲示板を作成していまして、次の一連の作業をしたいのですが、 ALTER TABLE phpbb_categories ADD cat_main_type CHAR(1); ALTER TABLE phpbb_categories ADD cat_main MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL; ALTER TABLE phpbb_categories ADD cat_desc TEXT NOT NULL; ALTER TABLE phpbb_forums ADD forum_link VARCHAR(255); ALTER TABLE phpbb_forums ADD forum_link_internal TINYINT(1) NOT NULL; ALTER TABLE phpbb_forums ADD forum_link_hit_count TINYINT(1) NOT NULL; ALTER TABLE phpbb_forums ADD forum_link_hit BIGINT(20) UNSIGNED NOT NULL; ALTER TABLE phpbb_users ADD user_sub_forum TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_split_cat TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_last_topic_title TINYINT(1) DEFAULT '1' NOT NULL; ALTER TABLE phpbb_users ADD user_sub_level_links TINYINT(1) DEFAULT '2' NOT NULL; ALTER TABLE phpbb_users ADD user_display_viewonline TINYINT(1) DEFAULT '2' NOT NULL; 上記をを打ち込んでもError 1046: No Database Selected と言われます。 そこでどのようにしてデータベースを選択する事が出来るのでしょうか? よろしくお願いいたします。

  • PostgreSQLの「not null」制約の追加

    こんにちは。いつもお世話になります。 PostgreSQLのversion7.2.8で、「not null」制約の追加、削除の方法をおたずねします。よろしくお願いします。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL; で試したところ、syntaxエラー(構文エラー)で失敗。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL; で試してみても、同じくsyntaxエラーです。 version7.2.8が原因でしょうか? また、version7.2.8でも「not null」制約の追加、削除が できる他の方法はありますでしょうか? テーブルを作り直さずに、 既存のテーブルのカラムへの制約の追加、削除をしようとしています。 よろしくお願いします。

  • テーブル作成時にエラー?

    こんにちは。 以下のような環境で操作を行っています。 RedHatLinux9.0 PostgreSQL 8.0.3 テーブル作成時に次のようなメッセージが出力され、テーブルを作成することができません。 NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "PK_SIKYO" for table "TM_SIKYO" ちなみに実行したSQL文は次の通りです。 CREATE TABLE "TOUSHIN"."TM_SIKYO" ( "SHIKYO_CD" int4 NOT NULL DEFAULT nextval('"TOUSHIN"."TM_SIKYO_SHIKYO_CD_seq"'::text), "SHIKYO_NM" varchar(50), "SHIKYO_RNM" varchar(50), "SHOW_FLAG" bool, "UNUSE_FLAG" bool, "CREATE_DATE" timestamp DEFAULT ('now'::text)::timestamp(6) with time zone, "CREATE_ID" varchar(10), "CHANGE_DATE" timestamp DEFAULT ('now'::text)::timestamp(6) with time zone, "CHANGE_ID" varchar(10), CONSTRAINT "PK_SIKYO" PRIMARY KEY ("SHIKYO_CD") ) WITHOUT OIDS; SQL文はWindows版のPostgreSQLから作成したものを、そのままコピーして利用しました。 プライマリーキーが正しく設定できていないようなメッセージだと思うのですが、対処法など詳しいことが分からずに困っています。 Windows版から出力したSQL文なので、SQL文に間違いがありそうな感じでもないですし、一体何が原因なのでしょうか?