2012-09-26 9 views
8

Ho installato un motore di blog per raffinerie che funziona perfettamente.La relazione esiste già durante la migrazione del rake

Ora ho generato una migrazione con alcune modifiche campi di tabella (naturalmente, non refinerycms o tabelle blog), ma sto ottenendo un errore:

== CreateBlogStructure: migrating ============================================
-- create_table("refinery_blog_posts", {:id=>true})
NOTICE: CREATE TABLE will create implicit sequence "refinery_blog_posts_id_seq1" for serial column "refinery_blog_posts.id"
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR: relation "refinery_blog_posts" already exists
: CREATE TABLE "refinery_blog_posts" ("id" serial primary key, "title" character varying(255), "body" text, "draft" boolean, "published_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL)

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

risposta

10

Controlla la tua db/schema.rb

Molto probabilmente hai creato la stessa tabella in aggiunta a una migrazione in db/migrate/[timestamp] your_migration

Puoi cancellare il db/migrate/[timestamp] your_migration se è un duplicato di quello trovato nello schema e dovrebbe funzionare.

6
PG::Error: ERROR: relation “refinery_blog_posts” already exists 

Pg è un gioiello Rails, il pezzo di codice che consente la comunicazione tra Rails e PostgreSQL. Correla le migrazioni alle tabelle SQL, quindi un errore di relazione. Allora, che cosa l'errore sta dicendo è:

I'm trying to create table X, based on migration X, but table X already exists in the database.

Possibili soluzioni:

  1. Creare migrazioni che scendono quelli, probabilmente vecchio, tavoli.
  2. Modificare il nome della migrazione.
  3. Accedere a PostgreSQL e rilasciare la tabella. Qualcosa di simile:

    $ psql -U username databasename 
    

    poi

    database_name=# drop table table-name; 
    

    I comandi esatti potrebbe essere un po 'diverso però.

+0

Sì, possiamo risolvere questo problema anche in questo modo. –

+0

Nota importante: le migrazioni vengono aggiunte dalla gemma ActiveRecord _non_ the pg gem. –