rake迁移期间已存在关系

Vai*_*put 10 rake migrate refinerycms

我已经为refinerycms安装了一个博客引擎,它运行得很好.

现在我已经生成了一些表字段更改的迁移(当然不是refinerycms或博客表),但是我收到了一个错误:

== CreateBlogStructure:迁移============================================
- - create_table("refinery_blog_posts",{:id => true})
注意:CREATE TABLE将为串行列"refinery_blog_posts.id"
rake中止创建隐式序列"refinery_blog_posts_id_seq1" !
发生错误,此以及所有后续迁移都已取消:

PG ::错误:错误:关系"refinery_blog_posts"已经存在
:CREATE TABLE"refinery_blog_posts"("id"串行主键,"title"字符变化(255),"body"文本,"draft"boolean,"published_at"时间戳,"created_at"时间戳NOT NULL,"updated_at"timestamp NOT NULL)

任务:TOP => db:migrate
(通过使用--trace运行任务来查看完整跟踪)

小智 15

检查db/schema.rb

除了db/migrate/[timestamp] your_migration中的迁移之外,您很可能在那里创建了相同的表

您可以删除db/migrate/[timestamp] your_migration,如果它与模式中找到的重复并且它应该有效.


giv*_*nse 7

PG::Error: ERROR: relation “refinery_blog_posts” already exists
Run Code Online (Sandbox Code Playgroud)

Pg是一个Rails gem,它允许Rails和PostgreSQL之间的通信.它将您的迁移与SQL表联系起来,从而产生关系错误.那么,错误的含义是:

我正在尝试基于迁移X创建表X,但表X已经存在于数据库中.

可能的解决方案:

  1. 创建删除那些可能是旧表的迁移.
  2. 更改迁移的名称.
  3. 登录PostgreSQL并删除表.就像是:

    $ psql -U username databasename
    
    Run Code Online (Sandbox Code Playgroud)

    然后

    database_name=# drop table table-name;
    
    Run Code Online (Sandbox Code Playgroud)

    确切的命令可能会有点不同.