ruby-on-rails - 在 Heroku 中将 Postgresql 连接到 Rails

标签 ruby-on-rails ruby postgresql heroku

所以我最近将我的 Rails 后端服务器部署到 Heroku。 在从 SQLitePostgreSQL 的过程中经历了一些挣扎之后,我终于让一切都运行起来了。 现在的问题是,我执行了 rake db:createrake db:migrate 并且没有任何错误,但是现在当我创建 REST 时调用服务器我有这个错误(完整):

2019-07-31T19:42:16.534355+00:00 app[web.1]: I, [2019-07-31T19:42:16.534259 #4]  INFO -- : [047c870d-8791-4ec7-90df-a7998b8b17c5] Started POST "/sessions" for 91.176.204.35 at 2019-07-31 19:42:16 +0000
2019-07-31T19:42:16.535824+00:00 app[web.1]: I, [2019-07-31T19:42:16.535063 #4]  INFO -- : [047c870d-8791-4ec7-90df-a7998b8b17c5] Processing by SessionsController#create as */*
2019-07-31T19:42:16.535947+00:00 app[web.1]: I, [2019-07-31T19:42:16.535882 #4]  INFO -- : [047c870d-8791-4ec7-90df-a7998b8b17c5]   Parameters: {"email"=>"titivermeesch@gmail.com", "password"=>"[FILTERED]"}
2019-07-31T19:42:16.566455+00:00 app[web.1]: I, [2019-07-31T19:42:16.566340 #4]  INFO -- : [047c870d-8791-4ec7-90df-a7998b8b17c5] Completed 500 Internal Server Error in 30ms (ActiveRecord: 11.2ms)
2019-07-31T19:42:16.567845+00:00 app[web.1]: F, [2019-07-31T19:42:16.567772 #4] FATAL -- : [047c870d-8791-4ec7-90df-a7998b8b17c5]   
2019-07-31T19:42:16.567954+00:00 app[web.1]: F, [2019-07-31T19:42:16.567879 #4] FATAL -- : [047c870d-8791-4ec7-90df-a7998b8b17c5] ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "users" does not exist
2019-07-31T19:42:16.567957+00:00 app[web.1]: LINE 8:                WHERE a.attrelid = '"users"'::regclass
2019-07-31T19:42:16.567959+00:00 app[web.1]:                                           ^
2019-07-31T19:42:16.567961+00:00 app[web.1]: :               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
2019-07-31T19:42:16.567962+00:00 app[web.1]:                      pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
2019-07-31T19:42:16.567964+00:00 app[web.1]:                      c.collname, col_description(a.attrelid, a.attnum) AS comment
2019-07-31T19:42:16.567965+00:00 app[web.1]:                 FROM pg_attribute a
2019-07-31T19:42:16.567966+00:00 app[web.1]:                 LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2019-07-31T19:42:16.567968+00:00 app[web.1]:                 LEFT JOIN pg_type t ON a.atttypid = t.oid
2019-07-31T19:42:16.567969+00:00 app[web.1]:                 LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
2019-07-31T19:42:16.567971+00:00 app[web.1]:                WHERE a.attrelid = '"users"'::regclass
2019-07-31T19:42:16.567972+00:00 app[web.1]:                  AND a.attnum > 0 AND NOT a.attisdropped
2019-07-31T19:42:16.567973+00:00 app[web.1]:                ORDER BY a.attnum
2019-07-31T19:42:16.567975+00:00 app[web.1]: ):
2019-07-31T19:42:16.568064+00:00 app[web.1]: F, [2019-07-31T19:42:16.568002 #4] FATAL -- : [047c870d-8791-4ec7-90df-a7998b8b17c5]   
2019-07-31T19:42:16.568171+00:00 app[web.1]: F, [2019-07-31T19:42:16.568104 #4] FATAL -- : [047c870d-8791-4ec7-90df-a7998b8b17c5] app/controllers/sessions_controller.rb:5:in `create'

我安装了 PostgreSQL 附加组件并且它正在运行。 (否则 Rails 服务器甚至无法启动)。

那么为什么每次请求都会出现这种错误?我检查了控制台,如果我做了类似 User.all 的事情,我会得到这个:

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "users" does not exist)
LINE 1: SELECT  "users".* FROM "users" LIMIT $1
                               ^
: SELECT  "users".* FROM "users" LIMIT $1

这让我很困惑,我做错了什么?

最佳答案

听起来您可能在本地而不是在 Heroku 上运行了 rake db:migrate。因此,当您使用 Heroku CLI 时,它无法识别用户表,因为它尚不存在。

我相信如果您在 Gemfile 中使用 pg gem,Heroku 的系统会自动为您设置一个数据库。我已经有一段时间没有创建 Heroku 实例了,所以不要在这方面引用我的话。

如果您不确定您的应用程序是否安装了 PostgreSQL,请查看该应用程序的服务插件区域。 Heroku 还有更多 documentation on using PostgreSQL on their platform.引用他们的 documentation for getting started with Rails 可能是个好主意

一旦您设置了 PostgreSQL 数据库以使用您的应用程序,您就可以使用 Heroku CLI 迁移数据库并创建您的用户表:

heroku rake db:migrate

关于ruby-on-rails - 在 Heroku 中将 Postgresql 连接到 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297899/

相关文章:

ruby-on-rails - 如何强制 send_data 在浏览器中下载文件?

ruby-on-rails - Spreecommerce 促销 "User"规则为所有用户创建调整

ruby - 如何从哈希中添加用户指定的值

ruby-on-rails - 在 script\console 中快速调试辅助方法

ruby - 在 Nokogiri 元素中编辑文本或使用正则表达式

postgresql - 将逻辑模型转换为物理模型。难以理解 ERD

ruby-on-rails - 如何用 cucumber 测试sidekiq

ruby-on-rails - 运行 rails new 时出现 Rubygems 问题

regex - 匹配法语字符

php - PostgreSQL:使用 PHP 的数组数据类型