07/09/2018, 10:59

Fix lỗi ERROR: function uuid_generate_v4() does not exist trong PostgreSQL

Việc generate UUID thường gặp trong trường hợp khi chúng ta cần seed dữ liệu vào trong một table nào đó trên database. PostgreSQL cung cấp sẵn cho chúng ta hàm uuid_generate_v4() dùng để generate một UUID hợp lệ. Tuỳ vào phiên bản nào của UUID mà bạn muốn generate thì hàm sử dụng có thể có tên khác ...

Việc generate UUID thường gặp trong trường hợp khi chúng ta cần seed dữ liệu vào trong một table nào đó trên database. PostgreSQL cung cấp sẵn cho chúng ta hàm uuid_generate_v4() dùng để generate một UUID hợp lệ. Tuỳ vào phiên bản nào của UUID mà bạn muốn generate thì hàm sử dụng có thể có tên khác nhau, ví dụ như uuid_generate_v3() hoặc uuid_generate_v1()...

Tuy nhiên nếu chỉ đọc tài liệu hướng dẫn của PostgreSQL và làm theo thì có nhiều khả năng bạn sẽ gặp phải lỗi sau:

ERROR: function uuid_generate_v4() does not exist

Lỗi này xuất hiện khá phổ biến bởi vì để hàm uuid_generate_v4() chạy được thì chúng ta cần phải thực hiện thêm một bước là cài đặt uuid-ossp extension của PostgreSQL.

Để cài đặt extension này bạn có thể kết nối tới database và sau đó chạy câu lệnh dưới đây:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Để kiểm tra lại xem các hàm generate UUID đã tồn tại chưa thì bạn chạy câu lệnh sau:

df

Kết quả hiển thị:

                                  List of functions
 Schema |        Name        | Result data type |    Argument data types    |  Type
--------+--------------------+------------------+---------------------------+--------
 public | uuid_generate_v1   | uuid             |                           | normal
 public | uuid_generate_v1mc | uuid             |                           | normal
 public | uuid_generate_v3   | uuid             | namespace uuid, name text | normal
 public | uuid_generate_v4   | uuid             |                           | normal

Và sau đó để generate lại UUID bạn chạy câu lệnh:

select uuid_generate_v4();

Chúc bạn thành công!

0