J'ai créé une application dans Ruby on Rails et je souhaite maintenant qu'elle soit hébergée. Cependant, ils nécessitent que j'utilise MySQL et que je l'installe avec sqLite3. Est-il possible de le convertir pour utiliser MySQL?
Réponses
Trop de publicités?Étape 0
Pour être sûr, je vous recommande d'expérimenter un peu avec cette technique dans une machine virtuelle. Epargnez-vous un tas de chagrin et de construire une machine virtuelle, découvrez votre code, et avoir un bon terrain de jeu que vous pouvez jeter si la tragédie frappe.
Étape 1
Faire une copie de sauvegarde de votre base de données.fichier yml.
(à partir de la racine de votre application)
cp config/database.yml config.database.yml.sqlite3
Étape 2
Faire une copie de sauvegarde de vos données
Pour Rails 3, installez le fichier YAML DB gem: https://github.com/ludicast/yaml_db
Pour Les Rails 2.x installer le fichier YAML plugin DB:
script/plugin install git://github.com/adamwiggins/yaml_db.git
Exécutez la tâche de vidage
rake db:dump
Étape 3
Mise à jour de votre config/database.fichier yml. Vous trouverez des entrées comme
development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
timeout: 5000
Modifier
development:
adapter: mysql
encoding: utf8
reconnect: false
database: **myapp_development**
pool: 5
username: **root**
password: **supersecretpassword**
**socket: /opt/local/var/run/mysql5/mysqld.sock**
test:
adapter: mysql
encoding: utf8
reconnect: false
database: **myapp_test**
pool: 5
username: **root**
password: **supersecretpassword**
socket: **/opt/local/var/run/mysql5/mysqld.sock**
production:
adapter: mysql
encoding: utf8
reconnect: false
database: **myapp_production**
pool: 5
username: **root**
password: **supersecretpassword**
socket: **/opt/local/var/run/mysql5/mysqld.sock**
Assurez-vous de mettre à jour les valeurs entouré par astérix en fonction de votre plate-forme! La prise de valeur est seulement bonne pour Mac OSX utiliser MacPorts. La plupart des versions de linux n'a pas besoin de cette valeur.
Étape 5
Si vous avez quelques erreurs lors de l'étape suivante, vous devrez installer le gem mysql:
sudo gem install mysql
Ont râteau de créer votre base de données
rake db:create
rake db:schema:load
Étape 6
Utilisation YamlDb pour recharger vos données dans MySql
rake db:load
Tant que vous n'avez pas écrit d'instructions SQL qui s'exécutent dans sqlLite3 et non dans MySQL (ce que vous n'aurez pas si votre accès à la base de données se fait via les migrations ActiveRecord et ActiveRecord), il vous suffit de changer l'adaptateur de base de données dans votre base de données. Fichier de configuration .yml.