PostgreSQL はオープンソースで利用でき、高機能で人気の高いリレーショナルデータベースです。ここでは、PostgreSQL 利用時の注意点を示します。

  • テーブル名(Wagbyのモデル名)の最大長は 63 文字です。
  • カラム名(Wagbyのモデル項目名)の最大長は30文字です。
  • データベースの文字エンコーディングに UTF-8 を使用する場合、8.1.7 以降または 8.2.2 以降の版をお使いください。Windows Vista で採用されたサロゲート・ペア文字を登録することができます。[詳細...]

PostgreSQL 9.1 以降で必要となる設定

PostgreSQL 9.1 から SQL のバックスラッシュをエスケープしないという仕様変更が行なわれました。 そのためWagby から利用する場合、設定ファイル postgresql.conf を次のように変更してください。

standard_conforming_strings = off
escape_string_warning = off

設定ファイル変更後、PostgreSQL を再起動してください。

これにより、以前の PostgreSQL と同じ動作とすることができます。

対応しなかった場合

実行時に次のようなエラーメッセージがログに記録されます。

[ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelperlogExceptions] ERROR: エスケープシーケンスが無効です  ヒント: エスケープ文字は空か1文字でなければなりません。

設定が正しく反映されたかどうかを確認する

pgAdmin もしくは、psql から下記の SQL を実行して設定を確認します。

show standard_conforming_strings;

出力結果が「off」となっていた場合、設定変更が反映されていることになります。

Wagby で指定した型は、データベース内で次のように扱われます。

整数型 int4
文字列型 varchar(255)
文字列型 (テキストエリア) text (1GB)
日付型 date
時間型 time
日付時間型 timestamp
ファイル型(ファイル名) varchar(255)
1バイト整数 int2
2バイト整数 int2
4バイト整数 int4
8バイト整数 int8
4バイト浮動小数点数 float4
8バイト浮動小数点数 float8
固定値 (作成日/更新日) timestamp
その他 (URL型/メールアドレス型など) varchar(255)
  • モデル参照の場合は、参照先モデルの主キーの型に準じます。
  • 開発者の方で型を変更することもできます。詳細は「リポジトリ > モデル項目の定義 > データベースの詳細」をお読み下さい。
varchar 型で指定する数は「バイト」または「文字」単位です。作成するテーブルの文字エンコーディングによって変わります。SQL_ASCII だとバイト単位、UNICODE, SJIS, EUC_JP は文字単位となります。詳細は PostgreSQL マニュアルでご確認ください。

9.1.0

PostgreSQL 9.1.0 以降、postgresql.conf 内の standard_conforming_strings のデフォルト値が on に変更されています。

デフォルトのままですと、文字列の参照でエラーとなるため、当該設定値ならびに escape_string_warning を off に変更してご利用ください。