Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku推送问题第2部分-Postgresql-PGError关系不存在-Ruby on Rails_Ruby On Rails_Ruby_Heroku - Fatal编程技术网

Ruby on rails Heroku推送问题第2部分-Postgresql-PGError关系不存在-Ruby on Rails

Ruby on rails Heroku推送问题第2部分-Postgresql-PGError关系不存在-Ruby on Rails,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,好了,我已经解决了关于Postgresql和SQLite之间差异的最后一个问题,看起来Heroku在告诉我还有一个问题。我是ruby和rails的新手,所以很多东西我一开始都无法理解。在这里寻找一个小方向。错误消息和PostsController索引如下所示。我检查了我的routes.rb文件,看起来一切正常,但我可能遗漏了什么。如果你需要,我会发帖的 Processing PostsController#index (for 99.7.50.140 at 2010-04-23 15:19:22

好了,我已经解决了关于Postgresql和SQLite之间差异的最后一个问题,看起来Heroku在告诉我还有一个问题。我是ruby和rails的新手,所以很多东西我一开始都无法理解。在这里寻找一个小方向。错误消息和PostsController索引如下所示。我检查了我的routes.rb文件,看起来一切正常,但我可能遗漏了什么。如果你需要,我会发帖的

Processing PostsController#index (for 99.7.50.140 at 2010-04-23 15:19:22) [GET]

ActiveRecord::StatementInvalid (PGError: ERROR:  relation "tags" does not exist
:             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
              FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"tags"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum
):
PostsController#索引

这看起来很奇怪:

WHERE a.attrelid = '"tags"'::regclass
单引号分隔字符串文字,因此内部双引号被视为字符串的一部分。因此,它正在寻找一个表名,该表名实际上包含
字符作为名称的一部分

我不确定Rails管道是如何生成该查询的,所以我没有任何建议来修复它。对不起


但这显然是个问题。:-

这个Rails应用程序使用了哪些gem?你在应用程序的根目录中有一个.gems清单文件供heroku自动检测和安装吗?我看到你正在使用will paginate gem。如果你没有将gems添加到.gems文件中,我想这就是问题所在。如果你没有这样做,那么这将是寻求帮助的最佳场所:

我刚刚在rails应用程序中发现了此问题的根源,这要感谢Bill Karwin的上述提示:

当我通过在我的开发盒上运行rake db:schema:dump来更新我的数据库模式时,它会用带引号的字符串替换一些(但不是全部)符号

e、 g

add_index :taggings, ["vectors"] 
变成

add_index "taggings", ["vectors"] 
这不会在我的dev-box上造成任何问题,但是当从头开始创建db时,heroku似乎不能很好地处理这种差异,而不是在db:push上

当我手动切换表格名称符号时,我的应用程序又开始运行了


如果有人能马上知道原因,我很感兴趣……

我也有同样的问题。我打赌您的表名必须是“tag”,而不是“tags”


如果您在Postgresql中将表名更改为“tags”,它会起作用。但是为什么呢?我给出了单数模型名,GHOST取复数。

要将下面的行添加到您的
/config/environment.rb

ActiveRecord::Base.pluralize_table_names = false

从rails 3.0.3升级到rails 3.0.5时,我遇到了一个类似的“PGError:ERROR:relation”…“不存在”问题-看起来数据库名称的复数化算法已经改变了。我过去需要的是复数化:“project\u metadatas”现在被称为“project\u metadata”

对我来说,解决办法是添加一个简单的迁移,将有问题的表重命名为:

class MetadataName < ActiveRecord::Migration
  def self.up
    rename_table :project_metadatas, :project_metadata
  end

  def self.down
    rename_table :project_metadata, :project_metadatas
  end
end
class MetadataName
我也有同样的问题,但只有en test和prod env

rake db:migrate 

嗨 我发现了一些东西 所以我的问题是:

 `enter code here`WHERE a.attrelid = '"posts"'::regclass
你们中的一些人是否使用带有初始化器文件的gem-like-rails\u-admin? 因为当我在与此模型相关的初始值设定项文件中注释我的操作时,我的migarion工作:)

所以也许(我不是sur)初始值设定项在rake任务之前,它要求一个模型,但在那里 不是sql表,所以是bug。
无论如何,此操作对我的测试和生产环境有效:)

我也遇到了同样的问题,问题是我忘记了使用rake迁移数据库。以下操作使一切正常工作:

bundle exec rake db:migrate

尽管我记得运行迁移,但在一次大推之后我还是遇到了同样的问题。对我来说,解决方案是重新启动:

heroku restart

这不是很让人舒服。我不太理解你提供的链接中的所有内容。我没有一个包含“的表格,因为我甚至不认为这是可能的。希望其他人以前见过。我对ruby、rails和编程都是新手,所以这对我来说很难。通常rails会根据ActiveRecord类名推断表名,但这是可以重写的。也许您在某个地方指定了SQL表名,但意外地包含了它“角色?我正在使用will_paginate、回形针、wysihat引擎。它们在environment.rb文件中都有行。heroku不是在environment.rb文件中自动安装这些东西的吗?哎呀!不会。Heroku不会从environment.rb文件中自动检测。你需要在你的应用程序根目录中有一个特殊的.gems清单文件。创建一个,并在其中添加所有宝石。上述链接中描述了该过程。我想你和heroku的所有问题都解决了为什么这与这个问题有关?其他答案更好地解决了这个问题!你试过“heroku rake db:migrate”吗?@Comptrol“heroku rake db:migrate”帮我搞定了。Cmd行输出表示Cmd已被弃用,应改用“heroku run rake”。那么,这是否意味着每次我通过迁移在本地进行db更改时,在运行“git push heroku master”之后,我必须使用“heroku run rake”进行后续操作?
 #config.model Post do
 #  field :body, :text do
 #    ckeditor true
 #  end
 #end
bundle exec rake db:migrate
heroku restart