gpt4 book ai didi

ruby - 导入数千条记录后无法推送到 Heroku

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:39 30 4
gpt4 key购买 nike

我有一个问题,我认为我的 sqlite3 数据库太大了。我将大约 100,000 条记录导入数据库,并且能够“git push”和“git push heroku”。现在我可能犯了一个错误,导入了太多记录……500,000。我能够推送到 git(现在它在 bitbucket 中表示大约 336MB)并且这似乎有效但是当我推送到 heroku 时,这就是我得到的:

/workspace/new_foodback$ git push heroku
Counting objects: 26, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (25/25), done.
Writing objects: 100% (26/26), 159.26 MiB | 1.43 MiB/s, done.
Total 26 (delta 20), reused 1 (delta 0)
remote:
remote: ! Size of checkout and restored submodules exceeds 1 GB. Reduce size and try pushing again.
remote:
To https://git.heroku.com/magnetic-beach-35611.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/magnetic-beach-35611.git'
ubuntu@colin339-rails-tutorial-482323864:~/workspace/new_foodback$

我怀疑我可能必须拆分提交。我运行了命令 sqlite3 business.db;并运行命令 VACUUM FULL;。我试过多次推高,我试过几次在 REBASE 中拆分提交,但我不是 100% 确定它是否是正确的方法,或者我是否正确拆分它(第一次).此错误总是发生在 159.26 MiB | 1.43 MiB/s,但经过一些拆分后,(25/25) 数字一直在增加(之前是 (18/18))。有什么想法可以解决对 Heroku 的推送吗?

最佳答案

对于整个提交历史(不是当前文件大小),Heroku 将 git repos 的大小限制为 1GB。您的存储库可能超过 1GB。

https://devcenter.heroku.com/articles/limits#git-repos

你至少有两个选择:

两者都将以重写的历史结束,但应该允许您缩小 git 存储库的大小。

即使你清理了,你的二进制 sqlite 文件中仍然可能有大量更改,所以我不确定你对数据库采取的任何操作都会使它变得更好(事实上,它会使它变得更糟通过添加额外的提交和大小)

Heroku 似乎不适用于浅层克隆,并且需要完整的历史记录,因此您可能需要重写历史记录。

您的 git 存储库大小超过 1GB。这可能是由于历史记录中所有先前提交的总大小(heroku 需要完整克隆才能部署)。拆分和添加新的提交只会继续增加大小。您需要确定膨胀的来源。它可能是继续添加二进制文件,甚至是添加然后删除(通过 git 提交)一个大的二进制文件。

您可以通过在本地运行 git count-objects -vH 并查看 size-pack size 来检查存储库的大小。

您也可以尝试使用脚本来比较提交之间的差异并获取 blob 大小:

这里还有一些不涉及重写历史的清理存储库的其他选项:

如果你已经在本地修复了 repo,如果它拒绝你的推送,你可能需要强制推送到 Heroku。除此之外,我认为您无法在 Heroku 方面做任何事情来解决此问题:您需要:

  • 减少当前提交中的 sqlite 文件的文件大小(如果您刚刚添加它们并且它们太大了)
  • 重写您的历史以减少存储库的整体大小
  • 使用上述帖子中的一种技术压缩文件

由于 Heroku 不支持 lfs 并且 github 不支持在没有 gitlfs 的情况下大于特定大小的文件(100MB),并且 bitbucket 似乎没有列出限制。这很可能是您堆叠了一堆提交,这些提交具有数百 MB 的二进制文件更改,使您超过了 1GB 的限制。

Bitbucket 还提供了更多关于如何计算实际存储库大小(不是当前默认分支总文件大小)的信息:https://confluence.atlassian.com/bitbucket/what-kind-of-limits-do-you-have-on-repository-file-size-273877699.html

关于ruby - 导入数千条记录后无法推送到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643408/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com