Puis-je utiliser la base de données mysql à partir de mon serveur Web personnel au lieu de la base de données de heroku?
J'ai configuré ma base de données de production comme ceci:
production:
adapter: mysql2
database: somedatabase
username: someusername
password: somepassword
Host: 1.1.1.1:1234
Mais cela ne fonctionne pas, mon application utilise toujours la base de données partagée de heroku.
C'est vieux, mais si quelqu'un cherche une réponse, c'est beaucoup plus facile que d'utiliser la gemme. Fournissez simplement un DATABASE_URL
et un SHARED_DATABASE_URL
(ne savez pas si la seconde est nécessaire). Le format de l'URL de la base de données est adapter://username:password@hostname:port/database
. Par exemple, vous feriez:
heroku config:add DATABASE_URL=mysql://etok:somepassword@<your-server>:3306/etok
heroku config:add SHARED_DATABASE_URL=mysql://etok:[email protected]:3306/etok
Ensuite, redéployez votre application. Il va lire votre DATABASE_URL
et générer le database.yml à partir de cela. Le port par défaut est déjà 3306, il n'est donc pas nécessaire de l'URL dans votre cas. Lorsque vous déployez, vous remarquerez peut-être qu'il génère votre database.yml:
-----> Writing config/database.yml to read from DATABASE_URL
Ensuite, vous êtes prêt (tant que votre serveur accepte les connexions de votre hôte heroku).
J'ai écrit un petit bijou qui peut aider avec ça. Vous pouvez le trouver à:
heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
heroku config:add SHARED_DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
Ensuite, fais un
Heroku restart
cela devrait faire.
Remarque importante: je vous suggère d'utiliser l'adresse IP de l'hôte de la base de données plutôt que de donner directement le nom d'hôte, coz. Avec certains services d'hébergement partagé comme Godaddy, le nom d'hôte de la base de données ressemble à user.345432.abcd.godaddy.com et il semble que heroku soit incapable de le résoudre correctement (expérience personnelle), j’ai résolu le nom d’hôte en adresse IP et l’utilisation directe de l’IP a fonctionné à merveille! De plus, si votre mot de passe de base de données contient des caractères spéciaux, assurez-vous de les échapper correctement (comme '\!' Pour '!' Et ainsi de suite ..)
jetez un oeil sur Heroku Amazon RDS addon . Je ne dis pas que vous l'utilisez, mais cela vous donne un aperçu de ce que vous devez faire et de la façon dont Heroku gère les bases de données - vous devez essentiellement définir une variable de configuration pour votre instance mysql.
Heroku ignore votre database.yml. Vous devrez explorer la solution Amazon RDS proposée par John Beynon ou un autre module similaire (le cas échéant). Messagerie Internet uniquement, vous devrez soit réévaluer votre besoin d’utiliser votre base de données MySQL, soit trouver un autre hébergement.
heroku db:Push
dupliquera à la fois le schéma ET les données de votre base de données de développement MySQL dans la base de données Postgres de heroku. Donc, rester avec MySQL pour dev n'est pas un problème.
J'espère que ça aide.
Ouais c'est très simple et direct:
1 - Créer une base de données mysql 2 - Créer un utilisateur de base mysql (définir les valeurs par défaut) 3.1 - Accédez à votre panneau Heroku/Config Vars
3.2 - Cliquez sur "Révéler Vars" et éditez (en cliquant sur l'icône en forme de crayon) celle que vous souhaitez modifier dans ce cas DATABASE_URL
(si vous n'en présentez qu'une nouvelle avec DATABASE_URL
comme nom)
3 (# 2) - Utilisation de la ligne de commande
heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:databaseserverport/databasename
alors juste
heroku restart
Et rappelez-vous la syntaxe:
DATABASE_URL
mysql://user:password@hostnameOrIPAddress:PortNumber/databasename
Le numéro de port par défaut du SGBD MySQL est: 3306
C'est pourquoi vous voyez les exemples mentionnés précédemment en utilisant DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
J'espère que cela t'aides!!!