gpt4 book ai didi

docker - 如何与Postgres上的非特权用户一起使用UUID?

转载 作者:行者123 更新时间:2023-12-02 18:51:26 35 4
gpt4 key购买 nike

如何为uuid行设置默认值?仅当uuid_generate_v4()扩展启用但不能启用时,uuid-ossp函数才起作用。

postgres=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION
postgres=# SELECT uuid_generate_v4();
uuid_generate_v4
--------------------------------------
929d5e41-d7a8-408a-b0e9-feecf10d853d
(1 row)
...
demo=> select uuid_generate_v4();
ERROR: function uuid_generate_v4() does not exist
LINE 1: select uuid_generate_v4();
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
demo=> CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
ERROR: permission denied to create extension "uuid-ossp"
HINT: Must be superuser to create this extension.

最佳答案

最重要的是,它并不是说它无法使用,但不允许与无特权的用户创建扩展。在Docker镜像合成期间,您应该创建和/或启用所需的扩展。

官方的postgres docker镜像将执行位于/docker-entrypoint-initdb.d/文件夹下的脚本。

如果您使用正式镜像作为基础镜像(推荐),则只需创建一个.sh文件,授予可执行标志(chmod 755),并将其添加到/docker-entrypoint-initdb.d/文件夹中。

希望它能工作:

#!/bin/bash
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname="$POSTGRES_DB"<<-EOSQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
EOSQL

关于docker - 如何与Postgres上的非特权用户一起使用UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58669938/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com