PG无法定义的错误关系用户不存在

我之前看到过这个问题,但仅适用于rspec。我还没有创建测试,因为它对我来说太高级了,但是很快我就会!:P


当我尝试注册/登录我的应用程序时出现此错误。我使用devise创建用户,还使用omniauth2使用google登录。


这是错误


ActiveRecord::StatementInvalid at /users/auth/google_oauth2/callback

PG::UndefinedTable: ERROR:  relation "users" does not exist

LINE 5:              WHERE a.attrelid = '"users"'::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 = '"users"'::regclass

               AND a.attnum > 0 AND NOT a.attisdropped

             ORDER BY a.attnum

我试过了rake db:migrate,但是已经创建了:在模式表中,存在用户。之前有人收到此错误吗?


数据库


config = / opt / local / lib / postgresql84 / bin / pg_config


development:

  adapter: postgresql

  encoding: unicode

  database: tt_intraweb_development

  pool: 5

  username: my_username

  password:


test:

  adapter: postgresql

  encoding: unicode

  database: tt_intraweb_test

  pool: 5

  username: my_username

  password:


production:

  adapter: postgresql

  encoding: unicode

  database: tt_intraweb_production

  pool: 5

  username: my_username

  password:


ibeautiful
浏览 1012回答 3
3回答

慕森卡

首先,您应从数据库中分离所有连接。默认情况下,您使用开发环境。然后尝试使用以下方法重置数据库:rake db:resetrake db:reset任务将删除数据库并重新设置。这在功能上等同于rake db:drop db:setup。这与运行所有迁移不同。它将仅使用当前schema.rb文件的内容。如果无法回滚迁移,则rake db:reset可能对您没有帮助。要了解有关转储模式的更多信息,请参阅“模式转储和您”部分。Rails文件如果技巧不起作用,请删除数据库,然后重新创建数据库,迁移数据,如果有种子,请播种数据库:rake db:drop db:create db:migrate db:seed或简而言之(从3.2开始):rake db:migrate:reset db:seed由于db:migrate:reset暗示删除,因此创建和迁移数据库。因为默认的环境rake是development,所以如果您在规格测试中看到异常,则应该为测试环境重新创建db,如下所示:RAILS_ENV=test rake db:drop db:create db:migrate或仅加载迁移的方案:RAILS_ENV=test rake db:drop db:create db:schema:load在大多数情况下,测试数据库是在测试过程中播种的,因此db:seed不需要通过任务操作。否则,您应该准备数据库(在Rails 4中已弃用):rake db:test:prepare然后(如果确实需要):RAILS_ENV=test rake db:seed在较新版本的Rails上,可能会出现错误ActiveRecord :: NoEnvironmentInSchemaError,因此只需在数据库环境设置任务之前添加任务:db:environment:set即可:RAILS_ENV=test rake db:environment:set db:drop db:create db:migrate

九州编程

我遇到此错误,并且在研究后发现PG无法定义的错误关系用户不存在错误的原因之一是:此错误是迁移错误。您可能已经创建了具有某些数据库属性的新模型。创建模型后,您必须将属性迁移到Rails应用模式。如果使用本地计算机进行开发,则可以使用命令rake db:migrate如果您使用的是herokuheroku run rake db:migrate

弑天下

您的测试数据库尚未准备好用于rspec。准备用于rspec的测试数据库以修复此错误RAILS_ENV=test rake test:prepare它将删除,创建迁移并将其添加到测试数据库如果rake任务中止并显示类似“ PG :: Error:ERROR”的消息:其他用户正在访问数据库“ [your_db_test]”,请执行此操作RAILS_ENV=test rake db:migrate
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby