Sto utilizzando db/structure.sql
per preservare il nostro stato DB poiché abbiamo estensioni e funzioni incorporate che rendono impraticabile l'utilizzo di schema.rb
.Rails db: struttura: dump ha percorsi di ricerca errati
Quando si eseguono le rotaie db:structure:dump
ha il comportamento strano di impostare i percorsi di ricerca vicino all'inizio E vicino alla fine del file. Il problema qui è che il percorso di ricerca nella parte superiore non è corretto, causando il fallimento di db:schema:load
miseramente.
L'ho modificato manualmente al momento (ad esempio aggiungendo postgis
al percorso di ricerca in alto), ma sarebbe bello se in qualche modo potessi ottenere correttamente il percorso di ricerca impostato dall'attività di dump.
database.yml
development: &dev
adapter: postgis
database: myapp_dev
host: localhost
encoding: utf8
template: template0 # Required for UTF8 encoding
postgis_extension: true
schema_search_path: "public,postgis"
db/structure.sql
--
-- PostgreSQL database dump
--
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET search_path = public, pg_catalog;
... Table/Sequence/Index creation happens here ...
--
-- PostgreSQL database dump complete
--
SET search_path TO public,postgis;
... Migrations inserted here ...
Il problema qui, è che i tavoli hanno bisogno postgis
nel percorso di ricerca da creare (che fanno utilizzare i tipi di dati postgis
dopo tutto)
I p riprendi il secondo set di percorsi di ricerca viene aggiunto come risultato dei percorsi di ricerca impostati in database.yml
.
È possibile ottenere le guide per posizionare il percorso di ricerca corretto nella parte superiore del file?
È possibile impostare il percorso di ricerca nei file di configurazione del database anziché nelle configurazioni di Rails? –
Posso (ALTER DATABASE db SET search_path = public, postgis;) Ma il punto di structure.sql è consentire a una nuova distribuzione di avere un ambiente di lavoro senza comandi sql manuali (altrimenti potrei semplicemente usare pg_dump e pg_restore). –
AFAIK 'structure.sql' viene generato dallo shelling degli strumenti CLI di PostgreSQL, la configurazione di Rails non è coinvolta oltre a specificare i parametri di connessione di base.Ad ogni modo, se fai un ALTER DATABASE, questo dovrebbe apparire in 'structure.sql', no? –