PostgreSQLからMySQLへ移行する際の注意点

3月 11, 2009 · Posted in PHP, データベース 
Post to Google Buzz
このエントリーをはてなブックマークに追加

PHPのプログラムでデータベースをPostgreSQLからMySQLに移行する際のメモ。

最近のレンタルサーバーはMySQLのみ搭載しているところが多くなってきているので、移行する機会が増えてきました。
その際の手順というか注意点をまとめました。

関数の修正

大抵は関数名を「pg_xxxxx」から「mysql_xxxxx」に変えるだけでOK。
しかし、一部違うところもあるので注意が必要。

  • 接続関数の表記方法
  • PostgreSQL
    $connect = pg_connect("host=[DBホスト名] port=5432 dbname=[DB名] user=[DBユーザ名] password=[DBパスワード]");
    MySQL
    $connect = mysql_connect([DBホスト名], [DBユーザ名], [DBパスワード]);
    mysql_select_db([DB名]);

SQLの違い
基本的な構文は一緒です。
しかし、以下のSQLを使用している場合はチェックが必要。

  • LIMIT
    1. MySQLにはOFFSETがなく、次のように記述しなければいけません。

    PostgreSQL
    SELECT * FROM table_name LIMIT 10 OFFSET 0;
    MySQL
    SELECT * FROM table_name LIMIT 0,10;

  • GROUP BY
    1. MySQLでは非表示のフィールドに対するグループ化を行うことができます。

    PostgreSQL
    SELECT id FROM table_name GROUP BY id;
    MySQL
    SELECT * FROM table_name GROUP BY id;

  • SEQUENCE
    1. MySQLにはSEQUENCEがありません。
      かわりに、AUTO_INCREMENTの属性をつけてあげることで、シーケンスと同じ役割をします。
      insert時には次のように記述します。

    PostgreSQL
    INSERT INTO table_name (id, content) VALUES (NEXTVAL('[シーケンス名]'), 'ABC')
    MySQL
    INSERT INTO table_name (id, content) VALUES ('', 'ABC');

以上が注意点です。

大きく修正するところはありませんが、規模が大きいプログラムだと修正も大変。。。
コーディング時に環境に依存しないような作りで実装するのがBestですね。

※参考サイト
http://www.shibata.tv/essay/essay_709.html
http://youkey.spaces.live.com/blog/cns!1pUAjefs3w0dlz3Blc7wCFxA!201.entry
http://php.benscom.com/manual/ja/book.pgsql.php
http://php.benscom.com/manual/ja/book.mysql.php

Comments

One Response to “PostgreSQLからMySQLへ移行する際の注意点”

  1. Elet32 on 2月 10th, 2012 8:35 PM

    大きい規模だとタイムスタンプの管理も大事ですよね。
    ってことで、こういう違いもあったので、コメントしておきます。

    PostgreSQL
    set timezone to ‘utc’
    MySQL
    set time_zone = ‘+0:00’

Leave a Reply