2011-01-16 32 views

Trả lời

10

Theo số Heroku documentation, việc thay đổi DATABASE_URL là cách chính xác để thực hiện.

Nếu bạn muốn ứng dụng đường ray kết nối với cơ sở dữ liệu không phải do Heroku cung cấp, bạn có thể tận dụng cùng cơ chế này. Chỉ cần đặt cấu hình DATABASE_URL var của bạn để trỏ đến bất kỳ cơ sở dữ liệu có thể truy cập đám mây nào và Heroku sẽ tự động tạo tệp database.yml của bạn để trỏ tới máy chủ bạn đã chọn. Tiện ích Amazon RDS thực hiện điều này cho bạn một cách tự động, mặc dù bạn cũng có thể sử dụng cùng một phương thức này để kết nối với cơ sở dữ liệu không RDS.

Dưới đây là một ví dụ mà nên làm việc:

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

Bạn có thể cần phải triển khai lại bằng cách làm cho một sự thay đổi và chạy git push heroku master

+0

Thực hiện điều đó, nhưng điều đó không giúp ích gì. Nó nói trong nhật ký mà Mysql :: Lỗi (Truy cập bị từ chối cho người dùng 'mydbname'@'ec2-184-72-153-138.compute-1.amazonaws.com' (sử dụng mật khẩu: YES)): – Arty

+0

do đó, nó sử dụng db_name mà tôi đã chỉ định trong DATABASE_URL, nhưng vẫn cố gắng kết nối với máy chủ amazonaws – Arty

+0

Thú vị. Tôi đã cập nhật câu trả lời của mình để bao gồm trường mật khẩu. Bạn có xác định điều đó không? Tôi sẽ tiếp tục đào một chút nếu có. –

0

tôi đã cùng một vấn đề chính xác này với cơ sở dữ liệu Dreamhost MySQL của tôi. Hóa ra giải pháp là để nói với Dreamhost là Ok chấp nhận các kết nối từ máy chủ nước ngoài này. Nếu không, Dreamhost sẽ chặn tất cả các yêu cầu tới MySQL không có nguồn gốc từ hệ thống của chúng.

Dường như nếu Heroku đang quay trở lại Amazon AWS mặc dù DATABASE_URL của bạn, đó là vì nó bị từ chối truy cập vào cơ sở dữ liệu MySQL của bạn.

3

Nhân tiện, máy chủ lưu trữ là XXXX.amazonaws.com, trong đó XXX là một máy chủ lưu trữ lâu dài có thể thay đổi. Nếu bạn có thể thêm ký tự đại diện, đó là cách dễ nhất %.amazonaws.com

Các vấn đề liên quan