以下、
$ で始まるコマンドは、linux の一般ユーザでのコマンド。
# から始まるコマンドは、Postgresql のコマンドライン。
Postgresqlで uuid を生成しようとしたら、
- uuid_generate_v1()
- uuid_generate_v1mc()
- uuid_generate_v3(namespace uuid, name text)
- uuid_generate_v4()
- uuid_generate_v5(namespace uuid, name text)
などがあるが、普通にインストールした状態だと使えない
|
# SELECT uuid_generate_v4(); ERROR: 関数uuid_generate_v4()は存在しません 行 1: SELECT uuid_generate_v4() |
使えるように、エクステンションを有効化しなければならない
|
# CREATE EXTENSION "uuid-ossp"; |
しかし、このコマンドも失敗する。
使えるエクステンションの一覧は以下で見れる
|
# SELECT * FROM pg_available_extensions; |
この一覧に、 uuid-ossp がなければ contrib をインストールする必要がある。
手順
- yum list で、自分のバージョンの contrib を探す
|
$ sudo yum list | grep postgres |
中から、それっぽいのを探してインストール。バージョン別に同じようなのが複数表示される可能性があるので自分の使ってるバージョンとかも確認する。
- インストール
|
$ sudo yum install postgresql92-contrib.x86_64 |
- インストールしたら、早速エクステンション一覧を見る。
|
# SELECT * FROM pg_available_extensions; tablefunc | 1.0 | | functions that manipulate whole tables, including crosstab adminpack | 1.0 | | administrative functions for PostgreSQL uuid-ossp | 1.0 | | generate universally unique identifiers (UUIDs) dict_xsyn | 1.0 | | text search dictionary template for extended synonym processing seg | 1.0 | | data type for representing line segments or floating-point intervals autoinc | 1.0 | | functions for autoincrementing fields |
あった! uuid-ossp だ。
- 有効化する
|
# CREATE EXTENSION "uuid-ossp"; |
- 確認する
|
# SELECT uuid_generate_v4(); |