【发布时间】:2017-01-26 05:29:32
【问题描述】:
我是使用 Rails 和 Heroku 的新手,我一直在尝试推出一款在本地运行良好的应用程序。我可以将它推送到heroku(似乎),但是当我尝试查看它时,我得到了
ActionView::Template::Error (PG::UndefinedTable: ERROR: relation "users" does not exist
我从类似的 SO 帖子中挖掘出来,我认为这与应用程序在 heroku 中使用的数据库有关,但到目前为止使用 heroku run rake db:reset 然后 heroku run rake db:migrate 返回了完全相同的错误。我确定我在这里做了一些非常误导的事情,但我希望有人能帮我弄清楚。这是我通过heroku logs 得到的:
2017-01-26T05:24:34.232181+00:00 app[web.1]: I, [2017-01-26T05:24:34.232138 #4] INFO -- : [7baf7e95-1518-4773-9f3c-39aef34651f2] Completed 500 Internal Server Error in 7ms (ActiveRecord: 1.8ms)
2017-01-26T05:24:34.233452+00:00 app[web.1]: F, [2017-01-26T05:24:34.233406 #4] FATAL -- : [7baf7e95-1518-4773-9f3c-39aef34651f2]
2017-01-26T05:24:34.233498+00:00 app[web.1]: F, [2017-01-26T05:24:34.233455 #4] FATAL -- : [7baf7e95-1518-4773-9f3c-39aef34651f2] ActionView::Template::Error (PG::UndefinedTable: ERROR: relation "users" does not exist
2017-01-26T05:24:34.233500+00:00 app[web.1]: LINE 1: SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LI...
2017-01-26T05:24:34.233501+00:00 app[web.1]: ^
2017-01-26T05:24:34.233501+00:00 app[web.1]: : SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT $1):
2017-01-26T05:24:34.233649+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] 21: <div class="container">
2017-01-26T05:24:34.233648+00:00 app[web.1]: F, [2017-01-26T05:24:34.233606 #4] FATAL -- : [7baf7e95-1518-4773-9f3c-39aef34651f2] 20: <div class="header">
2017-01-26T05:24:34.233650+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] 22: <a href="../messages"><h1 class="logo">MessagesApp</h1> <img class="logo-img" src="http://vignette2.wikia.nocookie.net/titanfall/images/3/3a/Icon_Chat.png/revision/latest?cb=20140504182858"></a>
2017-01-26T05:24:34.233650+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] 23: <% if logged_in? %>
2017-01-26T05:24:34.233651+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] 24: <%= link_to "Log out".html_safe, logout_path, method: "delete", class: "login-btn btn btn-default navbar-btn" %>
2017-01-26T05:24:34.233652+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] 25: <% else %>
2017-01-26T05:24:34.233652+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] 26: <%= link_to "Log in".html_safe, login_path, class: "login-btn btn btn-default navbar-btn" %>
2017-01-26T05:24:34.233692+00:00 app[web.1]: F, [2017-01-26T05:24:34.233648 #4] FATAL -- : [7baf7e95-1518-4773-9f3c-39aef34651f2]
2017-01-26T05:24:34.233718+00:00 app[web.1]: F, [2017-01-26T05:24:34.233685 #4] FATAL -- : [7baf7e95-1518-4773-9f3c-39aef34651f2] app/helpers/sessions_helper.rb:7:in `current_user'
2017-01-26T05:24:34.233718+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] app/helpers/sessions_helper.rb:11:in `logged_in?'
2017-01-26T05:24:34.233719+00:00 app[web.1]: [7baf7e95-1518-4773-9f3c-39aef34651f2] app/views/layouts/application.html.erb:23:in `_app_views_layouts_application_html_erb__1527317900822670125_70088753231660'
2017-01-26T05:24:34.240424+00:00 heroku[router]: at=info method=GET path="/" host=nameless-bayou-71899.herokuapp.com request_id=7baf7e95-1518-4773-9f3c-39aef34651f2 fwd="207.67.119.130" dyno=web.1 connect=1ms service=12ms status=500 bytes=1733
这是我认为相关的代码:
<% @messages.each do |message| %>
<div class="message <%= 'right' if logged_in? && message.user_id==current_user.id %>">
<% if message.user_id==current_user.id %>
<%= '<p class="user_name text-right">Me</p>'.html_safe %>
<% else %>
<p class="user_name"><%= message.user.name %></p>
<% end %>
<p class="content"><%= message.content %></p>
<p class="time <%= 'right' if message.user_id==current_user.id %>"><%= time_ago_in_words(message.created_at) %><br>
<% if message.user_id==current_user.id %>
<%= link_to 'Delete', message_path(message),
class: "delete-link",
method: :delete,
data: { confirm: 'Are you sure?' } %></p>
<% end %>
</div>
<% end %>
【问题讨论】:
-
尝试
heroku pg:reset DATABASE; heroku run rake db:migrate- 这将完全重置数据库 -
谢谢,我刚才试过了,得到了这个:
StandardError: An error has occurred, this and all later migrations canceled: PG::UndefinedTable: ERROR: relation "users" does not exist : CREATE TABLE "messages" ("id" serial primary key, "content" text, "users_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, CONSTRAINT "fk_rails_e3b11c0cbb" FOREIGN KEY ("users_id") REFERENCES "users" ("id") ) -
您的迁移顺序错误。在本地重置您的数据库并使其首先在那里工作。
-
不幸的是,在发布之前,我尝试在本地和 heroku 中重置。在本地已经可以正常工作了,一直都有。它通过 heroku 生产,这让我很头疼
-
可能你有错误的
create_messages迁移文件。消息应该有user_id字段,而不是user*s*_id,所以外键不应该是这样的FOREIGN KEY ("users_id")。尝试修复它并再次运行迁移。
标签: mysql ruby-on-rails ruby heroku