Как очистить базу данных Heroku

355

Я работаю над веб-приложением Ruby on Rails 3 для Heroku. Как очистить базу данных?

swimfar
источник

Ответы:

689

Чтобы удалить базу данных, если вы используете SHARED_DATABASE_URL:

$ heroku pg:reset DATABASE_URL

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

$ heroku run rake db:migrate  

Чтобы заполнить базу данных вашими начальными данными:

$ heroku run rake db:seed

---ИЛИ---

Вы можете объединить последние два ( перенести и заполнить ) в одно действие, выполнив это:

$ heroku run rake db:setup

Edit 2014-04-18: rake db:setupне работает с Rails 4, не работает сCouldn't create database error .

Edit 2014-10-09: Вы можете использовать rake db:setupс Rails 4. Это выдает Couldn't create databaseошибку (потому что база данных уже была создана с помощью heroku pg:resetкоманды). Но он также загружает вашу схему базы данных и ваши семена после сообщения об ошибке.

Вы можете сделать это практически любой командой rake, но есть исключения. Например, db:resetне работает через heroku run rake. Вы должны использоватьpg:reset вместо этого.

Более подробную информацию можно найти в документации Heroku:

Запуск команд Rake

Сбросить Postgres DB

Шон
источник
21
Спасибо. На самом деле, "heroku pg: reset --db SHARED_DATABASE_URL" сделал свое дело. Но ты заставил меня идти в правильном направлении.
Джей Годсе
5
@JayGodse Heroku теперь говоритSHARED_DATABASE_URL is deprecated, please use SHARED_DATABASE
Фил
6
На самом деле вы должны проверить свой schema.rb и использовать: rake db: schema: load
Amala
18
Они снова изменили это сейчасheroku pg:reset DATABASE
Харис Краина
8
Чтобы сэкономить пару секунд времени, используйтеheroku pg:reset DATABASE --confirm appname
GangstaGraham
97

Heroku устарела --db, поэтому теперь используйте:

heroku pg:reset DATABASE_URL --confirm {the name of your app}

Это немного сбивает с толку, потому что вы используете буквальный текст, SHARED_DATABASEно там, где я написал, {the name of your app}замените название вашего приложения. Например, если ваше приложение называется my_great_app, вы используете:

heroku pg:reset DATABASE_URL --confirm my_great_app
Дэйв Саг
источник
3
если вы просто вставите пропустить бит после (и в том числе) - heroku скажет вам, что печатать ..
baash05
полезная команда для получения имени вашей базы данных postgres на heroku: heroku config | grep HEROKU_POSTGRESQL
zero_cool
"Вы используете буквальный текст SHARED_DATABASE"? Вы используете DATABASE_URL в своих примерах кода. Вы имеете в виду это?
Майкл Даррант
Нет. Я имел в виду использование другого ответа на словаSHARED_DATABASE
Дейв Саг
65

Чтобы удалить базу данных:

$ heroku pg:reset SHARED_DATABASE --confirm NAME_OF_THE_APP

Чтобы воссоздать базу данных:

$ heroku run rake db:migrate

Чтобы заполнить базу данных:

$ heroku run rake db:seed

**Заключительный этап

$ heroku restart
Джордж Якуб
источник
4
Я предпочитаю этот ответ, чем любой другой. Это отлично работает в моем сценарии на Heroku, я считаю, что это очень недооценено!
Джонатан
Это может быть потому, что heroku недавно изменил синтаксис этих команд.
Джордж Якуб
1
'Heroku Restart' был единственным ключевым элементом, который мне не хватало. Спасибо.
Джереми Николай
heroku run rake db:migrateбольше не воссоздает базу данных
Rots
13

Теперь команда

heroku pg:reset DATABASE_URL --confirm your_app_name

таким образом, вы можете указать, какую базу данных приложения вы хотите сбросить. Тогда вы можете запустить

heroku run rake db:migrate 
heroku run rake db:seed 

или направить обе вышеуказанные команды

heroku run rake db:setup 

А теперь последний шаг, чтобы перезапустить ваше приложение

heroku restart
Сайед Этшам Аббас
источник
1
Перезапуск может быть необязательным, но стоит упомянуть об этом.
Франциско Кинтеро
11

Я связался со службой поддержки Heroku, и они подтвердили, что это ошибка в последней версии гема (я использую heroku-2.26.2)

Чарли - мы знаем об этой проблеме с драгоценным камнем 'heroku' и работаем над ее устранением.

Вот проблема, если вы хотите следовать - https://github.com/heroku/heroku/issues/356

Переход на более раннюю версию драгоценного камня 'heroku' должен помочь. Я использую v2.25.0 большую часть сегодняшнего дня без проблем.

Понизьте рейтинг с помощью следующих команд:

gem uninstall heroku

gem install heroku --version 2.25.0

Если у вас уже установлено несколько драгоценных камней, вам могут быть представлены:

Select gem to uninstall:
 1. heroku-2.25.0
 2. heroku-2.26.2
 3. All versions

Просто удалите # 2 и повторите команду. Радость!

superhighfives
источник
1
Теперь все драгоценные камни устарели, вам нужно избавиться от них и установить пояс для инструментов Heroku. toolbelt.heroku.com
Ghoti
9

Полный ответ (для пользователей с несколькими БД):

heroku pg: информация - какие выходы

=== HEROKU_POSTGRESQL_RED <- доступен
базовый
статус плана БД

heroku pg: сбросить HEROKU_POSTGRESQL_RED - подтвердить app_name

Более подробная информация находится по адресу : https://devcenter.heroku.com/articles/heroku-postgresql

Элвин К.
источник
8

Теперь это отличается от героку. Попробуйте: heroku pg: сбросить базу данных --confirm

jstnno
источник
Для некоторых приложений вам все еще нужно использовать SHARED_DATABASE
tfwright
7

Сегодня команда

heroku pg:reset --db SHARED_DATABASE_URL

не работает для общих планов, я решил использовать

heroku pg:reset SHARED_DATABASE
mmarqueti
источник
6

Войдите в свою БД, используя heroku pg:psqlи введите следующие команды:

drop schema public cascade;
create schema public;
manish_s
источник
6

Теперь также возможно сбросить базу данных через их веб-интерфейс.

Перейдите на dashboard.heroku.com, выберите свое приложение, и затем вы найдете базу данных в категории надстроек, щелкните по ней и затем сможете сбросить базу данных.

Сбросить базу данных Heroku

Луис Рамалхо
источник
5

Проверьте свою версию героку. Я только что обновил мой до 2.29.0 следующим образом:

heroku --version
#=> heroku-gem/2.29.0 (x86_64-linux) ruby/1.9.3

Теперь вы можете запустить:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME

Затем создайте базу данных и заполните ее одной командой:

heroku run rake db:setup

Теперь перезагрузите и попробуйте ваше приложение:

heroku restart
heroku open
Флавио Вуенше
источник
4

Это то, что сработало для меня.

1. ясно, БД.

heroku pg:reset --app YOUR_APP

После запуска вам придется снова ввести имя вашего приложения для подтверждения.

2. Миграция БД для воссоздания.

heroku run rake db:migrate  --app YOUR_APP

3. добавить начальные данные в БД.

heroku run rake db:seed --app YOUR_APP
Ронни Кибет
источник
3

Если вы предпочитаете использовать веб-сайт Heroku:

  1. Перейдите на https://postgres.heroku.com/databases
  2. Выберите базу данных, которую вы хотите сбросить
  3. Нажмите на кнопку настроек в правом верхнем углу
  4. Нажмите «Сбросить базу данных», как показано ниже:
  5. введите «СБРОС» и нажмите ОК

сброс базы данных heroku

КИО
источник
2

Предполагая, что вы хотите сбросить базу данных PostgreSQL и восстановить ее, используйте:

heroku apps

перечислить ваши заявки на Heroku. Найдите название вашего текущего приложения ( application_name). Тогда беги

heroku config | grep POSTGRESQL

чтобы получить название ваших баз данных. Примером может быть

HEROKU_POSTGRESQL_WHITE_URL

Наконец, учитывая, application_nameи database_urlвы должны запустить

heroku pg:reset `database_url` --confirm `application_name`
heroku run rake db:migrate
heroku restart
RileyE
источник
1

Если вы вошли в систему с консоли, это сделает работу в последнем инструментальном поясе heroku,

heroku pg: сбросить - подтвердить имя базы данных

Чарльз Скария
источник
0

Я всегда делаю это с помощью однострочного «heroku pg: reset DATABASE».

Марк Локлир
источник
0

Лучшее решение для вашей проблемы будет

heroku pg:reset -r heroku  --confirm your_heroku_app_name

- подтвердите ваше_имя_приложения

не требуется, но терминал всегда просит меня выполнить эту команду.

После этой команды у вас будет чистый БД, без структуры и прочее, после этого вы можете запустить

heroku run rake db:schema:load -r heroku

или

heroku run rake db:migrate -r heroku
Дмитрий Гусев
источник