亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PG無法定義的錯誤關系用戶不存在

PG無法定義的錯誤關系用戶不存在

ibeautiful 2019-12-21 12:51:56
我之前看到過這個問題,但僅適用于rspec。我還沒有創建測試,因為它對我來說太高級了,但是很快我就會!:P當我嘗試注冊/登錄我的應用程序時出現此錯誤。我使用devise創建用戶,還使用omniauth2使用google登錄。這是錯誤ActiveRecord::StatementInvalid at /users/auth/google_oauth2/callbackPG::UndefinedTable: ERROR:  relation "users" does not existLINE 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_configdevelopment:  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:
查看完整描述

3 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

首先,您應從數據庫中分離所有連接。默認情況下,您使用開發環境。然后嘗試使用以下方法重置數據庫:


rake db:reset

rake 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


查看完整回答
反對 回復 2019-12-21
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

我遇到此錯誤,并且在研究后發現PG無法定義的錯誤關系用戶不存在錯誤的原因之一是:


此錯誤是遷移錯誤。您可能已經創建了具有某些數據庫屬性的新模型。創建模型后,您必須將屬性遷移到Rails應用模式。


如果使用本地計算機進行開發,則可以使用命令


rake db:migrate

如果您使用的是heroku


heroku run rake db:migrate


查看完整回答
反對 回復 2019-12-21
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

您的測試數據庫尚未準備好用于rspec。


準備用于rspec的測試數據庫以修復此錯誤


RAILS_ENV=test rake test:prepare

它將刪除,創建遷移并將其添加到測試數據庫


如果rake任務中止并顯示類似“ PG :: Error:ERROR”的消息:其他用戶正在訪問數據庫“ [your_db_test]”,請執行此操作


RAILS_ENV=test rake db:migrate


查看完整回答
反對 回復 2019-12-21
  • 3 回答
  • 0 關注
  • 1143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號