невозможно импортировать в Heroku после импорта тысяч записей - PullRequest
0 голосов
/ 06 декабря 2018

У меня проблема с тем, что я считаю, что моя база данных sqlite3 слишком большая.Я импортировал около 100 000 записей в базу данных, и я смог "git push" и "git push heroku".Теперь я, вероятно, допустил ошибку и импортировал слишком много записей ... 500 000.Я был в состоянии подтолкнуть к Git (и теперь он составляет около 336 МБ в bitbucket), и это, кажется, работает, но когда я нажимаю на 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 МиБ |1,43 МиБ / с, но после некоторых расколов числа (25/25) увеличивались (ранее (18/18)).Любые идеи, как я могу решить этот толчок к Heroku?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Я уверен, что, возможно, есть лучший способ решить эту проблему, но я так и сделал.В итоге я удалил свою базу данных ... и воссоздал ее, но проблема осталась.Я обнаружил, что размер файла development.log составляет около 1,8 ГБ, поэтому проблема фактически осталась даже после того, как я выполнил сброс базы данных ... как только этот файл был удален, я смог снова отправить его в Heroku.Также я импортировал записи локально и планировал отправить их в git и Heroku, но я думаю, что это был неправильный способ сделать это.Поэтому в будущем я фактически импортирую записи прямо на веб-сайт и внесу изменения в консоль Heroku (консоль heroku run rails), что должно помешать мне снова столкнуться с этой проблемой.Я подозреваю, что, возможно, я мог просто удалить этот файл development.log с самого начала, чтобы решить проблему невозможности отправки в Heroku.

0 голосов
/ 06 декабря 2018

Heroku ограничивает репозитории git размером 1 ГБ для всей истории коммитов (не для текущего размера файла).Вероятно, ваш репо превышает 1 ГБ.

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

У вас есть как минимум два варианта:

И то, и другое закончится переписанной историей, но позволит вам уменьшить размер вашего git-репозитория.

Даже если вы пылесосите, у вас все еще есть значительныйколичество изменений в ваших двоичных файлах sqlite, поэтому я не уверен, что какое-либо действие, которое вы предпримете над базой данных, улучшит ее (на самом деле, ухудшит ее, добавив дополнительные коммиты и размер)

Herokuне работает с мелкими клонами и требует полной истории, поэтому вам может потребоваться переписать вашу историю.

Размер вашего хранилища git превышает 1 ГБ.Вероятно, это связано с общим размером всех предыдущих коммитов в вашей истории (герою требуется полный клон для развертывания).Разделение и добавление новых коммитов будет только увеличивать размер.Вам нужно определить источник вздутия.Это может быть дальнейшее добавление бинарных файлов или даже добавление, а затем последующее удаление (с помощью git commit) большого двоичного файла.

Возможно, вы сможете проверить размер вашего репо, запустив git count-objects -vH локально и глядя на size-pack size.

Вы также можете попробовать использовать скрипт, чтобы сравнить разницу между коммитами и получить размеры BLOB-объектов:

Также здесь есть несколько других опций очистки хранилища, не связанных с переписыванием истории:

Если вы уже исправили репо локально, вам может потребоваться принудительный толчок к Heroku, если он отклоняет ваш пуш.Кроме этого, я не думаю, что вы можете что-то сделать на стороне Heroku, чтобы это исправить: вам нужно либо:

  • уменьшить размер файлов sqlite в текущем коммите (еслиВы только что добавили их, и они просто слишком велики)
  • Перепишите свою историю, чтобы уменьшить общий размер вашего репозитория
  • Сожмите файлы, используя один из методов в посте, упомянутом выше

Поскольку Heroku не поддерживает lfs, а github не поддерживает размеры файлов, превышающие определенный размер, без gitlfs (100 МБ), а в битбакете, по-видимому, нет указанного ограничения.Скорее всего, это сценарий, в котором вы сложили кучу коммитов, в которых двоичные файлы стоили сотни мегабайтных изменений друг над другом, что привело к превышению лимита в 1 ГБ.

Bitbucket имеет больше информации о том, как вы можете вычислитьиз вашего фактического размера репозитория (не текущего общего размера файла ветки по умолчанию) также: https://confluence.atlassian.com/bitbucket/what-kind-of-limits-do-you-have-on-repository-file-size-273877699.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...