2012-09-26 12 views
8

He instalado un motor de blog para refinerycms que funciona a la perfección.La relación ya existe durante la migración de rake

Ahora me han generado una migración con algunos campos de tabla cambios (por supuesto, no refinerycms o tablas blog), pero estoy recibiendo un error:

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

Respuesta

10

Compruebe su db/schema.rb

Lo más probable es que tenga la misma tabla creada además de una migración en db/migrate/[timestamp] your_migration

Puede eliminar el db/migrate/[timestamp] your_migration si es un duplicado del encontrado en el esquema y debería funcionar.

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

Pg es una gema de Rails, la pieza de código que permite la comunicación entre Rails y PostgreSQL. Relaciona tus migraciones a tablas SQL, por lo tanto, un error de relación. Por lo tanto, lo que el error está diciendo es:

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

soluciones posibles:

  1. Crear migraciones que dejan caer los, probablemente de edad, tablas.
  2. Cambia el nombre de la migración.
  3. Inicie sesión en PostgreSQL y suelte la tabla. Algo así como:

    $ psql -U username databasename 
    

    continuación

    database_name=# drop table table-name; 
    

    Los comandos exactos podría ser un poco diferente, sin embargo.

+0

Sí, podemos resolver este problema de esta manera también. –

+0

Nota importante: las migraciones se agregan mediante la gema ActiveRecord _not_ la gema pg. –

Cuestiones relacionadas