2017-10-27 1 views
0

Ich versuche, einen neuen Server mit Fremdtabellen (mit postgres_fdw) einzurichten, die zuvor keine fremden Tabellen waren, und ich habe einige OneToOneFields, die auf diese Tabellen zeigen. Dies funktioniert nicht ohne weiteres - OneToOneFields verwendet Fremdschlüssel und postgres_fdw unterstützt keine Fremdschlüssel für Fremdtabellen.Django OneToOneField auf Fremdtabelle

Die fremden Tabellen befinden sich in einer schreibgeschützten Datenbank auf demselben Server.

Gibt es einen einfachen Weg, um das zu erreichen?

+0

Nicht sicher, was Sie denken, funktioniert nicht. Alles, was ein OneToOneField benötigt, ist eine ID, die auf die andere Tabelle zeigt. –

+0

Ich möchte mein Datenschema erstellen können, aber die Fremdschlüssel können nicht erstellt werden, daher schlägt die anfängliche Migration fehl. Ich habe mich gefragt, ob es ein Projekt gab, das dies bereits geschafft hat - vielleicht durch eine Art von Proxy-Tabellen, Ansichten oder das Erstellen von Triggern, die das irgendwie handhaben würden ... – Crag

Antwort

0

Nach ein wenig mehr Forschung, denke ich, ist die Antwort "tue das nicht". Die Behandlung von Fremdschlüsseln für Fremdtabellen ist nicht implementiert, und jede Lösung, die versucht, diese Lücke zu schließen, würde schwerwiegende Probleme bei der Leistung und/oder Konsistenz verursachen.

pglogical sieht wie eine bessere Lösung aus - anstatt die Daten über postgres_fdw einzuziehen, replizieren Sie die Tabellen in die neue Datenbank, damit sie lokal sind. Es gibt andere Projekte zum Replizieren nur bestimmter Tabellen, aber pglogical ist in PostgreSQL 10 enthalten.

Verwandte Themen