Rails无法重置开发数据库

时间:2013-07-29 16:56:54

标签: ruby-on-rails postgresql activerecord database-migration

我尝试使用以下代码删除并重置我的数据库:rake db:drop db:create db:migrate并且由于某种原因它无法正常工作。现在,当我尝试运行该命令时,我得到:

FATAL:  database "myapp_development" does not exist
FATAL:  database "myapp_test" does not exist
ERROR:  relation "posts" does not exist at character 315
STATEMENT:              SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
              FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"posts"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum

如果我只尝试rake db:create db:migrate,那么我会收到错误

myapp_development already exists
myapp_test already exists
ERROR:  relation "posts" does not exist at character 315...

如果我只运行rake db:migrate,那么我只得到错误的最后一部分:

PG::Error: ERROR:  relation "posts" does not exist
LINE 5:              WHERE a.attrelid = '"posts"'::regclass
                                    ^
:             SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
              FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"posts"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum

我尝试重新启动我的数据库:pg_ctl stop -D /usr/local/var/postgres pg_ctl start -D /usr/local/var/postgres,但无济于事。

我对这个问题完全停顿了。任何人都知道如何重置数据库并重新迁移?

1 个答案:

答案 0 :(得分:1)

经过postgres的麻烦之后,事实证明这与数据库架构或postgres无关。

我只需要注释掉我的routes.rb文件,它引用了Post模型。随着routes.rb的注释,我运行了很好的迁移,然后取消注释routes.rb。