gpt4 book ai didi

ruby-on-rails - PG undefinedtable 错误关系用户不存在

转载 作者:太空狗 更新时间:2023-10-30 01:37:18 27 4
gpt4 key购买 nike

我以前看到过这个问题,但只针对 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,但它已经创建:在架构表中存在用户。以前有人遇到过这个错误吗?

数据库.yml

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:

最佳答案

首先,您应该从数据库中分离所有连接。默认情况下,您使用开发 环境。然后尝试使用以下命令重置数据库:

rake db:reset

The rake db:reset task will drop the database and set it up again. This is functionally equivalent to rake db:drop db:setup.

This is not the same as running all the migrations. It will only use the contents of the current schema.rb file. If a migration can't be rolled back, rake db:reset may not help you. To find out more about dumping the schema see Schema Dumping and You section. Rails Docs

如果这个技巧没有帮助,删除数据库,然后重新创建它,迁移数据,如果你有种子,播下数据库:

rake db:drop db:create db:migrate db:seed

或简而言之(自 3.2 起):

rake db:migrate:reset db:seed

因为 db:migrate:reset 意味着删除、创建和迁移数据库。因为 rake 的默认环境是开发,如果您在规范测试中看到异常,您应该为测试 重新创建数据库环境如下:

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

关于ruby-on-rails - PG undefinedtable 错误关系用户不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com