Base de données mysql distante sur L'application Heroku
puis-je utiliser la base de données mysql à partir de mon serveur web personnel au lieu de la base de données d'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.
6 réponses
c'est vieux mais au cas où quelqu'un tombe en cherchant une réponse, c'est beaucoup plus facile que d'utiliser la pierre précieuse. Il suffit de fournir un DATABASE_URL
et SHARED_DATABASE_URL
(je ne sais pas si la deuxième est nécessaire). Le format d'url de la base de données est adapter://username:password@hostname:port/database
, ainsi, par exemple, vous voulez faire:
heroku config:add DATABASE_URL=mysql://etok:somepassword@<your-server>:3306/etok
heroku config:add SHARED_DATABASE_URL=mysql://etok:somepassword@79.101.41.213:3306/etok
Puis re-déployer votre application. Il va lire votre DATABASE_URL
et de générer la base de données.yml. Le port par défaut est déjà 3306 il n'est donc pas nécessaire dans l'url dans votre cas. Lorsque vous déployez, vous pouvez remarquer qu'il génère de votre base de données.yml:
-----> Writing config/database.yml to read from DATABASE_URL
alors vous êtes prêt (aussi longtemps que votre serveur accepte les connexions de votre hôte heroku.
j'ai écrit un petit bijou qui pourrait vous aider. 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
alors, faites un
Heroku restart
ça devrait aller.
user.345432.abcd.godaddy.com et il semble comme heroku est incapable de le résoudre correctement (expérience personnelle), j'ai résolu le nom d'hôte à l'adresse IP et en utilisant L'IP directement travaillé comme un le charme ! Aussi, si votre mot de passe de base de données a des caractères spéciaux, assurez-vous que vous les échappez correctement (comme'\!"pour"!"et ainsi de suite..)Heroku ignore votre base de données.yml. Vous aurez besoin d'explorer la solution RDS Amazone John Beynon suggéré ou un autre addon similaire (s'il ya un). IMO, vous aurez soit à réévaluer votre besoin d'utiliser votre MySQL db ou trouver un autre hébergement. Juste au cas où vous ne la connaissez pas déjà, la commande:
heroku db:push
va dupliquer à 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 problème.
j'espère que ça aide.
regardez Heroku Amazon RDS addon. Je ne dis pas de l'utiliser, 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 - fondamentalement, vous devez définir une variable de configuration à votre instance mysql.
Ouais c'est très simple et simple:
1 - Créer mysql db 2-Créer un utilisateur mysql db (définir par défaut)) 3.1-allez à votre panneau Heroku / Config Vars
3.2-cliquez sur "Reveal Vars" et éditez (en cliquant sur l'icône du crayon) sur celui que vous voulez changer dans ce cas DATABASE_URL
(si présente pas seulement un nouveau DATABASE_URL
comme le nom)
3 (#2) - À l'aide de ligne de commande
heroku config:add DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:databaseserverport/databasename
puis
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 des exemples mentionnés précédemment en utilisant DATABASE_URL=mysql://dbusername:dbpassword@databasehostIP:3306/databasename
Espérons que cette aide!!!