Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 DB?_Ruby On Rails_Heroku - Fatal编程技术网

Ruby on rails 如何将本地表架构_迁移中的数据推送到Heroku DB?

Ruby on rails 如何将本地表架构_迁移中的数据推送到Heroku DB?,ruby-on-rails,heroku,Ruby On Rails,Heroku,我能够将我的RubyonRails应用程序和MySQL(本地开发)一起推送到Heroku服务器,同时使用命令Heroku rake db:migrate迁移我的模型。我还阅读了有关的文档。那个文档是指将实际数据从本地开发数据库推送到Heroku的数据库吗?我是否需要修改文件database.yml中的任何内容才能实现它 我运行了以下命令: heroku db:push 我得到了一个错误: Sending data 2 tables, 3 records !!! Caught Server

我能够将我的RubyonRails应用程序和MySQL(本地开发)一起推送到Heroku服务器,同时使用命令
Heroku rake db:migrate
迁移我的模型。我还阅读了有关的文档。那个文档是指将实际数据从本地开发数据库推送到Heroku的数据库吗?我是否需要修改文件
database.yml
中的任何内容才能实现它

我运行了以下命令:

heroku db:push
我得到了一个错误:

Sending data
2 tables, 3 records
!!! Caught Server    Exception                                   | ETA:  --:--:--
Taps Server Error: PGError ERROR:  duplicate key value violates unique constraint
"unique_schema_migrations"
我有两个表,一个是为我的应用程序创建的,另一个是
schema\u migrations
。两个表中的条目总数为3。我还在打印我创建的表中的条目数,它显示为0

你知道我可能遗漏了什么或者我做错了什么吗

编辑: 我发现,从我运行migrate的那一刻起,Heroku的DB就已经有了
schema\u迁移

新问题:有人知道如何将特定表中的数据排除到Heroku DB中吗。在这种情况下要排除的表将是
schema\u migrations

不太好的解决方案: 我在谷歌上搜索,其他人也有同样的问题。他建议将
schema\u迁移
表命名为
zschema\u迁移
。通过这种方式,其他表中的数据将被正确推送,直到最后一个表中的数据失败为止。这是一个相当糟糕的解决方案,但暂时可以


更好的解决方案是使用现有的Rails命令,该命令可以从数据库中重置特定的表。我认为Rake不能做到这一点。

这是一种基于错误的猜测,但是推送看起来像是抓取了模式和数据。我会尝试推送到一个空数据库。

两个可能的选项:

  • gem和gem(它用来同步数据库)都是开源的——您可以将它们分叉,修改taps客户端API以支持从推送中排除表,然后修改heroku gem以使用该新选项

  • 您可以编写一个包装器脚本,用于备份schema_migrations表,删除该表,
    heroku push
    es数据库,然后重新加载该表


  • 我刚刚在heroku的新竹服务器上部署了一个Rails 3测试版应用程序。现在,我可以通过以下操作将数据从本地开发机器上载到heroku数据库:

    heroku rake db:fixtures:load test/fixtures/my_model.yml
    

    然后在Heroku数据库中正确传播数据。即使我指定了一个特定的数据文件,它也会自动从我的其他yaml文件中推送数据。这可能与我的模型关系有关。

    如果您的数据库不同步,您可以在使用之前重置Heroku数据库

    heroku db:reset
    

    从特定桌子上推/拉

    heroku db:pull——表、日志、标记


    这样可以帮我弄清楚到底发生了什么。当我第一次运行
    db:migrate
    时,表
    schema\u migrations
    在Heroku数据库上创建。当我尝试推送本地数据时,它失败了,因为我在本地
    schema_migrations
    中的值是Heroku的副本。我现在需要知道如何从
    schema\u migrations
    表中排除push模式和数据。如果使用db:push,我认为它将创建整个数据库。这意味着您不需要运行db:migrate。创建数据库后立即推送-在本例中,我认为这意味着在创建Heroku应用程序后立即推送。我尝试过,但它抱怨Heroku服务器上尚未创建架构,这就是为什么运行迁移似乎是第一步。为什么您试图以这种方式将数据推送到生产应用程序?我的网站是由内容驱动。有时,我想在实时推送它之前,看看它在本地开发服务器上的显示情况。支持将数据推送到Heroku,如他们的doc:ugh所示。只是碰到了同样的问题。我能够用fixture推送数据,见下面我的答案。