2012-09-26 19 views
8

Ich habe eine Blog-Engine zu raffinerycms installiert, die perfekt funktioniert.Relation existiert bereits während der Rake-Migration

Jetzt habe ich eine Migration mit einigen Tabellenfeldern Änderungen erzeugt (natürlich nicht refinerycms oder Blog-Tabellen), aber ich erhalte eine Fehlermeldung:

== 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)

Antwort

10

Überprüfen Sie Ihre db/schema.rb

Sie haben wahrscheinlich die gleiche Tabelle neben einer Migration in db/migrate/[timestamp] erstellt Ihre_Migration

Sie können die db/migrate/[timestamp] your_migration löschen, wenn es ein Duplikat des gefundenen ist im Schema und es sollte funktionieren.

6

Pg ist ein Rails-Juwel, das Stück Code, das die Kommunikation zwischen Rails und PostgreSQL ermöglicht. Es bezieht Ihre Migrationen auf SQL-Tabellen, also einen Beziehungsfehler. Also, was der Fehler sagt, ist:

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

Mögliche Lösungen:

  1. Migrationen erstellen, die jene fallen, wahrscheinlich, Tische.
  2. Ändern Sie den Namen der Migration.
  3. Melden Sie sich bei PostgreSQL an und löschen Sie die Tabelle. Etwas wie:

    $ psql -U username databasename 
    

    dann

    database_name=# drop table table-name; 
    

    Die genauen Befehle könnte ein wenig anders, obwohl sein.

+0

Ja, wir können dieses Problem auf diese Weise lösen. –

+0

Wichtiger Hinweis: Migrationen werden vom ActiveRecord-Gem- _not_ the pg gem hinzugefügt. –