以下、
$ で始まるコマンドは、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)
などがあるが、普通にインストールした状態だと使えない
1 2 3 4 5 |
# SELECT uuid_generate_v4(); ERROR: 関数uuid_generate_v4()は存在しません 行 1: SELECT uuid_generate_v4() |
使えるように、エクステンションを有効化しなければならない
1 2 3 |
# CREATE EXTENSION "uuid-ossp"; |
しかし、このコマンドも失敗する。
使えるエクステンションの一覧は以下で見れる
1 2 3 |
# SELECT * FROM pg_available_extensions; |
この一覧に、 uuid-ossp がなければ contrib をインストールする必要がある。
手順
- yum list で、自分のバージョンの contrib を探す
- インストール
- インストールしたら、早速エクステンション一覧を見る。
- 有効化する
- 確認する
1 2 3 |
$ sudo yum list | grep postgres |
中から、それっぽいのを探してインストール。バージョン別に同じようなのが複数表示される可能性があるので自分の使ってるバージョンとかも確認する。
1 2 3 |
$ sudo yum install postgresql92-contrib.x86_64 |
1 2 3 4 5 6 7 8 9 10 |
# 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 だ。
1 2 3 |
# CREATE EXTENSION "uuid-ossp"; |
1 2 3 |
# SELECT uuid_generate_v4(); |