2011-01-16 8 views
6

Ich möchte mysql-Datenbank verwenden, die auf meinem eigenen Server gehostet wird. Ich habe DATABASE_URL und SHARED_DATABASE_URL config vars geändert, um auf meinen Server zu zeigen, aber es versucht immer noch, sich mit den amazonaws-Servern von heroku zu verbinden. Wie repariere ich das?Wie benutze ich einen eigenen mysql-Datenbankserver mit heroku?

Antwort

10

Gemäß der Heroku documentation ist die Änderung DATABASE_URL der richtige Weg zu gehen.

Wenn Sie Ihre Rails-Anwendung mit einer nicht von Heroku bereitgestellten Datenbank verbinden möchten, können Sie den gleichen Mechanismus nutzen. Stellen Sie einfach Ihre DATABASE_URL-Konfigurationsvariable so ein, dass sie auf jede Cloud-zugängliche Datenbank verweist, und Heroku erstellt automatisch Ihre Datenbank.yml-Datei, um auf Ihren ausgewählten Server zu verweisen. Das Amazon RDS Add-on erledigt dies automatisch für Sie, obwohl Sie diese Methode auch für die Verbindung zu Nicht-RDS-Datenbanken verwenden können.

Hier ist ein Beispiel, die funktionieren sollte:

heroku config:add DATABASE_URL=mysql://user:[email protected]/db

Sie müssen möglicherweise durch eine Änderung umschichten und läuft git push heroku master

+0

Hat das, aber es hat nicht geholfen. Es sagt in Protokollen, dass Mysql :: Error (Zugriff verweigert für Benutzer 'meindbname'@'ec2-184-72-153-138.compute-1.amazonaws.com' (mit password: YES)): – Arty

+0

, so dass es db_name verwendet dass ich in DATABASE_URL angegeben, aber immer noch versucht, eine Verbindung zu Amazon Server – Arty

+0

Interessant. Ich habe meine Antwort aktualisiert, um ein Passwortfeld hinzuzufügen. Spezifizierst du das auch? Ich werde weiter graben, wenn es so ist. –

0

Ich hatte genau dieses gleiche Problem mit meinem Dreamhost MySQL-Datenbank. Es stellte sich heraus, dass die Lösung darin bestand, DreamHost mitzuteilen, dass es OK war, Verbindungen von diesem fremden Host zu akzeptieren. Andernfalls blockiert Dreamhost alle Anfragen an MySQL, die nicht von ihren Systemen stammen.

Es scheint, als ob Heroku trotz seiner DATABASE_URL auf Amazon AWS zurückfällt, weil es den Zugriff auf Ihre MySQL-Datenbank verweigert.

3

Übrigens ist der Gastgeber XXXX.amazonaws.com, wo XXX ein langer Host hame ist, der sich wahrscheinlich ändert. Wenn Sie einen Platzhalter hinzufügen können, ist das am einfachsten %.amazonaws.com