Les étapes ci-dessous ont fonctionné pour moi. Elle utilise le robinets 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 bien 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 de nom d'utilisateur ou de mot de passe, mais la gemme taps exige quelque chose. J'ai juste utilisé les littéraux "user" et "password".
Créer l'utilisateur de la base de données Postgres pour les nouvelles bases de données
$ createuser f3
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
EDIT - Mise à jour de la commande ci-dessous - utilisez plutôt ceci
$ createuser f3 -d -s
Créez les bases de données requises
$ createdb -Of3 -Eutf8 f3_development
$ createdb -Of3 -Eutf8 f3_test
Mettre à jour le Gemfile
gem 'sqlite3'
gem 'pg'
gem 'taps'
$ bundle
Mettre à jour database.yml
#development:
# adapter: sqlite3
# database: db/development.sqlite3
# pool: 5
# timeout: 5000
development:
adapter: postgresql
encoding: unicode
database: f3_development
pool: 5
username: f3
password:
#test:
# adapter: sqlite3
# database: db/test.sqlite3
# pool: 5
# timeout: 5000
test:
adapter: postgresql
encoding: unicode
database: f3_test
pool: 5
username: f3
password:
Démarrer le serveur taps sur la base de données sqlite
$ taps server sqlite://db/development.sqlite3 user password
Migrer les données
$ taps pull postgres://f3@localhost/f3_development http://user:password@localhost:5000
Redémarrer le serveur web Rails
$ rails s
Nettoyer le fichier Gemfile
#gem 'sqlite3'
gem 'pg'
#gem 'taps'
$ bundle
2 votes
Avez-vous des données de production en direct qui doivent aller avec, ou s'agit-il d'une nouvelle application ?
19 votes
Je vous recommande de changer votre environnement de développement pour PostgreSQL également. SQLite et PostgreSQL (et toutes les autres bases de données) ont des idées différentes sur ce que signifie "SQL valide" et aucun ORM ne peut vous isoler de toutes les idiosyncrasies de la base de données.