On 10/29/15 4:26 PM, Gastón Avila wrote: > Hi all, > > I used alembic to generate (auto) a migration which added a table to my > postgresql DB which had a foreign key constraint matching two columns in > the new table to two columns in an existing one. The two columns in the > existing table where a joint primary key (hence unique). The generated > migration had TWO lines for the foreign key constraint and that caused > it to fail with this error > > > there is no unique constraint matching given keys for referenced > table "agency_version" > > [SQL: '\nCREATE TABLE agency_tag (\n\tagency_id INTEGER NOT > NULL, \n\ttransaction_id INTEGER NOT NULL, \n\tname VARCHAR(12), > \n\tPRIMARY KEY (agency_id, transaction_id), \n\tFOREIGN > KEY(agency_id) REFERENCES agency_version (agency_id), > \n\tFOREIGN KEY(transaction_id) REFERENCES agency_version > (transaction_id)\n)\n\n'] > > The migration had these lines > > sa.ForeignKeyConstraint(['agency_id', 'transaction_id'], > ['agency_version.agency_id'], ), > sa.ForeignKeyConstraint(['transaction_id'], > ['agency_version.transaction_id'], ), > > > which when changed to > > sa.ForeignKeyConstraint(['agency_id', 'transaction_id'], > ['agency_version.agency_id', 'agency_version.transaction_id'], ),
those mean two totally different things, and you likely want the latter. You should make sure your original model / table metadata uses the composite ForeignKeyConstraint as well, and not ForeignKey() which isn't typically compatible with a composite primary key as a target. > > > worked allright. > > Is postgresql the only DBMS which will complain about this? It took me a > while to figure this out. > > Thanks > > > -- > You received this message because you are subscribed to the Google > Groups "sqlalchemy-alembic" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to sqlalchemy-alembic+unsubscr...@googlegroups.com > <mailto:sqlalchemy-alembic+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sqlalchemy-alembic" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy-alembic+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.