我有一個在開發和測試中工作正常的Rails應用程序,但是在生產中,它被配置爲使用遠程Postgresql數據庫,但無法創建其表。數據庫已安裝並正在運行。我可以通過psql作爲應用程序連接到它,從生產服務器,使用我在我的database.yml中指定的相同配置,然後我可以使用命令創建和查詢表,沒問題。PG :: UndefinedTable - 下一步故障排除步驟?
當我執行數據庫相關的rake任務,一切都看起來很不錯:
$ rake db:reset
-- create_table("users", {:force=>true})
-> 0.0293s
-- add_index("users", ["username"], {:name=>"index_users_on_username", :unique=>true})
-> 0.0428s
-- initialize_schema_migrations_table()
-> 0.0212s
-- create_table("users", {:force=>true})
-> 0.0097s
-- add_index("users", ["username"], {:name=>"index_users_on_username", :unique=>true})
-> 0.0058s
-- initialize_schema_migrations_table()
-> 0.0092s
沒有錯誤。但表格尚未創建。
我通過調查Nginx的錯誤日誌中發現了這一點,但重現錯誤的最簡單方法是火起來的控制檯,並與應用程序的唯一模式做任何事情:
$ rails console production
Loading production environment (Rails 4.2.0.beta4)
2.1.3 :001 > all_users = User.all
PG::UndefinedTable: ERROR: relation "users" does not exist
LINE 1: SELECT "users".* FROM "users"
^
我也SSH進入數據庫服務器並用\z
檢查數據庫,但它不在那裏。
我認爲應用程序正確地連接到數據庫服務器,因爲之前我得到權限錯誤,並且我解決了這些錯誤。但我不知道如何確定。如果我確認我連接正確,那麼我該從哪裏出發?
謝謝!
您的'db:reset'是否針對您要連接的同一個數據庫運行? – 2014-10-30 23:57:32
如果您有權限訪問,請查看postgresql日誌文件,您可以在$ PGDATA/pg_log /中找到該文件。您的應用程序未報告錯誤的可能性很大。 – harmic 2014-10-31 00:02:12
我有完整的訪問權限。我檢查出來了,它有基本相同的錯誤。所以我認爲這證實配置是可以的;也就是說,錯誤發生在數據庫服務器上。有一點細節,一行沒有在網絡服務器上顯示: '2014-10-30 19:03:06 EDTERROR:關係「用戶」不存在於字符323' – hoverbikes 2014-10-31 00:23:45