我有一个在开发和测试中工作正常的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