J'ai une application de rails dont les bases de données sont en SQLite (le développement et la production). Depuis que je passe à heroku, je souhaite convertir ma base de données en PostgreSQL.
Quoi qu'il en soit, j'ai entendu dire que la base de données locale de développement n'a pas besoin d'être changée de SQLite, donc je n'ai pas besoin de changer cela, cependant, comment puis-je changer l'environnement de production de SQLite à PostgreSQL?
Quelqu'un a-t-il déjà fait cela auparavant et peut-il vous aider?
PS Je ne sais pas exactement comment s'appelle ce processus, mais j'ai entendu parler de la migration de la base de données de SQLite vers PostgreSQL, est-ce ce qu'il faut faire?
ruby-on-rails
database
sqlite
postgresql
heroku
Vasseurth
la source
la source
Réponses:
Vous pouvez changer votre database.yml en ceci au lieu d'utiliser le sqlite prêt à l'emploi:
la source
Les étapes ci-dessous ont fonctionné pour moi. Il utilise le bijou taps , créé par Heroku et mentionné dans le Railscast # 342 de Ryan Bates. Il y a quelques étapes mais cela a parfaitement fonctionné (même les dates ont été correctement migrées), et c'était beaucoup plus facile que les migrations Oracle -> DB2 ou SQL Server -> Oracle que j'ai effectuées dans le passé.
Notez que SQLite n'a pas d'identifiant d'utilisateur ni de mot de passe, mais le gem taps nécessite quelque chose. J'ai juste utilisé les littéraux «utilisateur» et «mot de passe».
Créer l'utilisateur de la base de données Postgres pour les nouvelles bases de données
EDIT - Commande mise à jour ci-dessous - utilisez-la à la place
Créez les bases de données requises
Mettre à jour le Gemfile
Mettre à jour database.yml
Démarrez le serveur taps sur la base de données sqlite
Migrer les données
Redémarrez le serveur Web Rails
Nettoyer le Gemfile
la source
Depuis que vous passez à heroku, vous pouvez utiliser des robinets pour le faire:
Cela poussera vos données sqlite de développement local vers la production, et heroku se convertira automatiquement en postgres pour vous.
Cela devrait également fonctionner pour pousser une base de données sqlite de production vers heroku, mais ce n'est pas testé.
la source
vous devrez aussi ajouter la ligne " gem 'pg' " à votre gemfile, 'pg' étant la gemme postgres actuelle pour Rails.
la source
Mettez simplement à jour le fichier config / database.yml:
Ce qui précède est ce qui est généré lorsque vous exécutez:
Ajoutez également ceci à votre Gemfile:
la source
Maintenant c'est devenu facile avec une seule commande
la source
Après avoir remplacé gem
'sqlite3
par gempg
dans le gemfile, j'ai continué à obtenir le messagesqlite3 error
en poussant vers le maître Heroku car j'avais oublié de valider le gemfile mis à jour. Simplement faire ce qui suit a résolu ceci:la source
Mettez simplement à jour votre datatbase.yml
Nous utilisons des rails et les normes de base doivent être suivies comme DRY, Convention over Configuration etc. donc dans le code ci-dessus, nous ne répétons pas le même code encore et encore.
la source
Cela a été mentionné au-dessus de moi, mais je n'ai pas assez de réputation en tant que rôdeur pour pouvoir voter pour lui. Dans l'espoir d'attirer un peu plus l'attention des débutants de Rails lisant cette réponse:
^^^ Ceci est un élément clé en plus du fichier database.yml décrit dans la réponse sélectionnée pour migrer votre application Rails vers Postgres.
la source
C'est comme ça que j'ai la configuration de la mienne. Si vous utilisez uniquement l'IRM et non Jruby, vous pouvez ignorer la logique dans les paramètres de l'adaptateur.
la source
Vous pouvez essayer de suivre:
sqlite3 development.db .dump | psql dbname username
ou essayez avec sqlitetopgscript: http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg
la source
Une solution possible (pas pour heroku) est d'utiliser yaml.db à partir de:
http://www.railslodge.com/plugins/830-yaml-db
la source
Aujourd'hui, j'ai eu le même problème. Je travaille sur Rails 4.2.8. La solution a été spécifier la version gem pg, dans mon cas,
0.18.4
.la source