2011-03-22 3 views
32

heroku의 데이터베이스 대신 개인 웹 서버에서 mysql 데이터베이스를 사용할 수 있습니까? 내 응용 프로그램은 여전히 ​​Heroku가 데이터베이스를 공유되는 사용이 작동하지 않습니다Heroku 앱의 원격 mysql 데이터베이스

production: 
    adapter: mysql2 
    database: somedatabase 
    username: someusername 
    password: somepassword 
    host: 1.1.1.1:1234 

그러나 :

는이 같은 내 프로덕션 데이터베이스를 구성했습니다.

답변

47

이 오래지만 주위에 대답을 찾고 방울 경우 누구라도, 그것은 보석을 사용하는 것보다 훨씬 쉽다. DATABASE_URLSHARED_DATABASE_URL (두 번째 것이 필요한지 확실하지 않음)을 제공하십시오. 데이터베이스 URL 형식은 adapter://username:[email protected]:port/database, 그래서 예를 들어, 당신은 할 것 :

heroku config:add DATABASE_URL=mysql://etok:[email protected]<your-server>:3306/etok 
heroku config:add SHARED_DATABASE_URL=mysql://etok:[email protected]:3306/etok 

이 그런 다음 응용 프로그램을 다시 배포합니다. DATABASE_URL을 읽고 그로부터 database.yml을 생성합니다. 기본 포트는 이미 3306이므로 필요한 경우 URL에 필요하지 않습니다. 당신은 배포 할 때, 당신은 당신의 database.yml을 생성 것을 알 수 있습니다.

-----> Writing config/database.yml to read from DATABASE_URL 
다음

당신이 한 서버가 귀하의 Heroku가 호스트에서 연결을 허용으로 (설정하고

+9

'DATABASE_URL'로 충분합니다. 'SHARED_DATABASE_URL'을 지정하지 않고 작동합니다. 또한, mysql2 어댑터가 mysql보다 더 많이 사용된다는 사실을 알고 싶습니다. 그러면 mysql2 : // ...와 같은 모양이됩니다. 물론'gemfile'에'gem 'mysql2''을 추가해야합니다. –

+0

X.509를 이런 식으로 사용할 수 있습니까? –

+2

"누구든지 대답을 찾고 싶을 때". 방금 날 구 했구나. 고맙습니다! 이것은 내가 생각할 수있는 것보다 훨씬 간단합니다. – RileyE

1

Heroku Amazon RDS addon입니다. 나는 그것을 사용하지는 않겠지 만, 당신이해야 할 일과 Heroku가 데이터베이스를 관리하는 방법에 대한 통찰력을 제공합니다 - 기본적으로 당신은 mysql 인스턴스에 설정 변수를 설정해야합니다.

1

헤로 쿠는 database.yml을 무시합니다. John Beynon이 제안한 Amazon RDS 솔루션이나 다른 유사한 추가 기능 (있는 경우)을 탐색해야합니다. IMO를 사용하려면 MySQL 데이터베이스를 사용할 필요성을 재평가하거나 다른 호스팅을 찾아야합니다. 다만 경우에 당신이 이미 그것을 알고하지 않았다 명령 :

heroku db:push 

스키마와 Heroku가의 포스트 그레스 데이터베이스에서 MySQL의 개발 데이터베이스의 데이터를 모두 복제됩니다. dev에 MySQL을 사용하는 것은 문제가되지 않습니다.

도움이 되었기를 바랍니다.

+0

데이터베이스를 무시한다는 사실을 알았습니다.yml과 나는 다음과 같이 DATABASE_URL을 구성하려고 시도했다. config : DATABASE_URL = mysql2 : // user : password @ host/dbname을 추가했으나 작동하지 않는다. app은 Amazon 서버에서 db를 찾는다. 이것은 로그에 있습니다 : /app/.bundle/gems/ruby/1.8/gems/mysql2-0.2.6/lib/mysql2/client.rb:37:in'connect ': 사용자'etok '@'ec2에 대한 액세스가 거부되었습니다. -174-129-89-188.compute-1.amazonaws.com '(암호 사용 : 예) (Mysql2 :: 오류) – dormitkon

8

나는 이것을 도울 수있는 보석을 썼다. 당신은 그것을 찾을 수 있습니다

http://github.com/nbudin/heroku_external_db

+0

Thanks Nat. 나는 한 달 동안 보석을 사용하여 익숙해졌으며 잘 작동합니다! – Dorian

+1

우리는 또한 이것을 약 1 년 동안 사용해 왔습니다. 이 프로젝트에 문서를 추가하여 시작하기가 더 쉽습니다. 내 블로그의 글에 대한 링크는 다음과 같습니다. http://www.benjaminoakes.com/2011/11/21/using-heroku-with-an-external-mysql-database/ –

3
heroku config:add DATABASE_URL=mysql://dbusername:[email protected]:3306/databasename 
heroku config:add SHARED_DATABASE_URL=mysql://dbusername:[email protected]:3306/databasename 

을 그리고 수행

Heroku restart 

을해야하는

중요 참고 :. 당신이 데이터베이스 호스트의 IP 주소를 사용하는 것이 좋습니다 godaddy와 같은 일부 공유 호스팅 서비스와 함께 호스트 이름을 직접 사용하는 것보다 db 호스트 이름은 user.345432.abcd.godaddy.com처럼 보이며 올바르게 해결할 수없는 것처럼 보입니다 (개인적인 경험) , IP 주소로 호스트 이름을 확인하고 IP를 직접 사용하여 매력처럼 작동했습니다! 또한 데이터베이스 암호에 특수 문자가있는 경우 올바르게 입력해야합니다 (예 : '!'와 같은 '!'등).

관련 문제