Amazon RDS Postgresql 未分配主键

Amazon RDS Postgresql not assigning primary key

我使用 Amazon 的数据库迁移工具从 EC2 上的 Postgresql 数据库迁移到 RDS 实例。

我的应用程序在 Python 3.4 上使用 sqlalchemy。自迁移以来,尝试向数据库添加新数据会导致错误 sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) null value in column "id" violates not-null constraint

我检查了 pg_admin 中的数据库,它显示 ALTER TABLE public.users ADD COSTRAINT users_pkey PRIMARY KEY(id); 作为 table 上的 users_pkey 约束。

应用程序能够无误地读取数据和修改现有数据。

@stdunbar 为我指出了正确的方向,谢谢。

我不确定这是否完整 "answer" 但我花了很长时间才找到问题的解决方案。

@studunbar 指示我查看 RDS 数据库中反映的内容。文档暗示了这一点,但我没有想到——DMS 不会复制任何序列、索引或外键关系。事后我尝试使用架构迁移工具来执行此操作,但它只是清除了我的数据。使用 before 阻止了我的迁移脚本 运行.

这可能是用户错误。但我的解决方法是使用 pg_dump 和 pg_restore 进行迁移,完全绕过 DMS。我知道这只适用于 PostgreSQL。

公平地说,AWS 文档确实简要建议尽可能使用本机工具。