DRYな備忘録

Don't Repeat Yourself.

【Postgres】function uuid_generate_v4() does not existとしかられる

問題

CREATE TABLE文を実行すると、(書いてて思ったけど、UUID v4、255byteもなくていいな)

CREATE TABLE "users" (
  "id" varchar(255)   DEFAULT uuid_generate_v4(),
  "name" text,
  PRIMARY KEY ("id")
)

以下のようにしかられる

ERROR:  function uuid_generate_v4() does not exist

uuid_generate_v4とは

PostgreSQL: Documentation: 9.5: uuid-ossp

The uuid-ossp module provides functions to generate universally unique identifiers (UUIDs) using one of several standard algorithms. There are also functions to produce certain special UUID constants.

参考

stackoverflow.com

解決

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

ログ

mydb=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
ERROR:  permission denied to create extension "uuid-ossp"
HINT:  Must be superuser to create this extension.

superuserでなければいけないようだ。入りなおして

mydb=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION
mydb=# SELECT uuid_generate_v4();
           uuid_generate_v4
--------------------------------------
 f7d5ac9b-a0e4-4f06-b172-30f9c2edc8f6
(1 row)

いけてる

DRYな備忘録