SYSTEM DEVELOPMENT

STUDY GROUP

mysql⇔postgresqlの互換性の話

移行するにもちょこちょこと差異があるようで一筋縄ではいかないみたいなので互換性について少し調べてみた
SERIAL型
MySQLではオートインクリメント 直前に使われた値の取得はAPIから提供されるmysql_insert_id()で簡単に取得できる
Posgreではセクエンスが作られデフォルト値のnextval()が設定される 直前に使われた値の取得にcurrval()を使用するが、その際セクエンスの名前が必要
SQL文表記
コメント行の開始文字
MySQL:#(–でもおk)
PostgreSQL:–(#は認識されない)
引用符の違い
MySQL:”も’もおk
PostgreSQLはエスケープ処理が必要 (\’とか”とか)
timestamp型
MySQL:0000-00-00 00:00:00がおk
PostgreSQL:上記はNG
Character(n)型
MySQL:長さを指定しても入力した値だけが取得される
PostgreSQL:長さを指定するとnに満たない分に空欄が追加される
booleanの値の違い
MySQL:”1″or”0″
PostgreSQL:”t”or”f”
ORDER BY句のnullのソート順
MySQL:先頭になる
PostgreSQL:末尾になる
変換ツールがあるけどものによってはエラーやたらめったら吐いたりするので注意、だそうな

menu