【发布时间】:2017-05-18 21:34:57
【问题描述】:
我使用 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); 作为表上的 users_pkey 约束。
应用程序能够正确读取数据和修改现有数据。
【问题讨论】:
-
这不是自动分配它所需要的。有默认值吗?
-
否,它以前在没有默认值的情况下工作。列是
id = Column(Integer, primary_key=True, index=True)索引选项是多余的,但是指定列的代码没有改变,并且之前分配了主键 -
你能检查“旧”数据库是否有默认值吗?根据我的经验,PostgreSQL 在 AWS RDS 环境中与在本地或在 EC2 上完全相同。我们使用脚本在本地和 RDS 上创建数据库,它们“正常工作”。我觉得缺少其他东西。
-
不错的建议......很多东西都不见了。旧的 EC2 数据库有
ALTER TABLE public.users ADD COLUMN id integer; ALTER TABLE public.users ALTER COLUMN id SET NOT NULL; ALTER TABLE public.users ALTER COLUMN id SET DEFAULT nextval('users_id_seq'::regclass);我也缺少我所有的外键。我需要弄清楚 DMS 出了什么问题
标签: postgresql amazon-web-services amazon-ec2 amazon-rds