gpt4 book ai didi

PostgreSQL UNIQUE 约束未应用于 Docker 容器

转载 作者:行者123 更新时间:2023-11-29 13:53:31 25 4
gpt4 key购买 nike

下面的语句:

CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(100) NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
address VARCHAR(255) NOT NULL,
phone_number VARCHAR(20) NOT NULL
);

不会导致 username 具有 UNIQUE 约束。

my_db=# \d users
Table "public.users"
Column | Type | Modifiers
--------------+------------------------+----------------------------------------------------
id | integer | not null default nextval('users_id_seq'::regclass)
username | character varying(50) | not null
password | character varying(100) | not null
first_name | character varying(50) | not null
last_name | character varying(50) | not null
address | character varying(255) | not null
phone_number | character varying(20) | not null
Indexes:
"users_pkey" PRIMARY KEY, btree (id)

问题

我没有在文档中发现对 UNIQUE 有任何限制。我错过了什么?

上下文

在官方上运行的PostgreSQL PostgreSQL Docker container

最佳答案

@wildplasser 和@dmg 是正确的,IF NOT EXISTS 部分不会覆盖现有表,并且不会应用更改。因此,删除它可以解决 非容器化数据库实例上的问题

在当前问题上,我不得不使用新的 SQL 脚本(添加了 UNIQUE 约束)重建我的容器(创建一个新图像)。这解决了问题。

仅仅停止并重新运行 Docker 容器不会应用 SQL 脚本。关于official PostgreSQL Docker image初始化 SQL 脚本在镜像创建时运行(又名 docker build)。

因此,对于 SQL 脚本中的每一次更改,我都必须运行 docker build my_db_container 以摆脱旧图像并获得新图像。

感谢大家给我的意见,让我找到了解决方案。

关于PostgreSQL UNIQUE 约束未应用于 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454589/

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