У меня есть приложение rails, в котором базы данных находятся в SQLite (разработка и производство). Поскольку я перехожу на heroku, я хочу преобразовать свою базу данных в PostgreSQL.
В любом случае, я слышал, что локальную базу данных разработки не нужно менять с SQLite, поэтому мне не нужно менять это, однако, как мне изменить производственную среду с SQLite на PostgreSQL?
Кто-нибудь делал это раньше и может помочь?
PS Я не уверен, как именно называется этот процесс, но я слышал о переносе базы данных с SQLite на PostgreSQL, это то, что нужно сделать?
ruby-on-rails
database
sqlite
postgresql
heroku
Vasseurth
источник
источник
Ответы:
Вы можете изменить свой database.yml на этот вместо использования стандартного sqlite:
источник
Следующие ниже шаги сработали для меня. Он использует краны камень, созданный Heroku и упоминается в Райана Бейтса Railscast # 342. Есть несколько шагов, но это сработало отлично (даже даты были правильно перенесены), и это было намного проще, чем миграции Oracle -> DB2 или SQL Server -> Oracle, которые я делал в прошлом.
Обратите внимание, что SQLite не имеет идентификатора пользователя или пароля, но для гема taps что-то требуется. Я просто использовал литералы «пользователь» и «пароль».
Создайте пользователя базы данных Postgres для новых баз данных
РЕДАКТИРОВАТЬ - Обновленная команда ниже - используйте это вместо
Создайте необходимые базы данных
Обновите Gemfile
Обновить database.yml
Запустите сервер кранов в базе данных sqlite
Перенести данные
Перезагрузите веб-сервер Rails
Очистить Gemfile
источник
Поскольку вы переходите в Heroku, вы можете использовать касания для этого:
Это переведет ваши локальные данные sqlite для разработки в производство, а heroku автоматически преобразует их в postgres.
Это также должно работать, чтобы отправить рабочую базу данных sqlite на heroku, но это не тестировалось.
источник
вам также нужно будет добавить строку « gem 'pg' » в ваш гем-файл, где «pg» будет текущим гемом postgres для Rails.
источник
Просто обновите файл config / database.yml:
Выше показано то, что генерируется при запуске:
Также добавьте это в свой Gemfile:
источник
Теперь это стало проще с одной командой
источник
После замены gem
'sqlite3
на gempg
в gemfile я продолжал получать приsqlite3 error
нажатии на мастер Heroku, потому что я забыл зафиксировать обновленный gemfile. Это решило простое выполнение следующих действий:источник
Просто обновите ваш datatbase.yml
Мы используем рельсы, и должны соблюдаться основные стандарты, такие как DRY, Convention over Configuration и т. Д., Поэтому в приведенном выше коде мы не повторяем один и тот же код снова и снова.
источник
Об этом упоминалось выше меня, но у меня недостаточно репутации скрытня, чтобы я мог проголосовать за него. В надежде привлечь немного больше внимания новичков Rails, читающих этот ответ:
^^^ Это ключевая часть в дополнение к файлу database.yml, описанному в выбранном ответе, для переноса вашего приложения Rails в Postgres.
источник
Вот как у меня устроена моя установка. Если вы используете только МРТ, а не Jruby, вы можете пропустить логику в настройках адаптера.
источник
Вы можете попробовать следующее:
sqlite3 development.db .dump | psql dbname username
или попробуйте sqlitetopgscript: http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg
источник
Возможное решение (не для героку) - использовать yaml.db из:
http://www.railslodge.com/plugins/830-yaml-db
источник
Сегодня у меня была такая же проблема. Я работаю над Rails 4.2.8. Решением было указать версию pg gem, в моем случае
0.18.4
.источник