2011-03-22 9 views
32

क्या मैं अपने व्यक्तिगत वेब सर्वर से mysql डेटाबेस का उपयोग उसकेोकू डेटाबेस के बजाय कर सकता हूं?Heroku ऐप पर रिमोट mysql डेटाबेस

मैं इस तरह मेरी उत्पादन डेटाबेस के लिए कॉन्फ़िगर:

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

लेकिन, यह काम नहीं करता, मेरे एप्लिकेशन को अभी भी उपयोग करता Heroku डेटाबेस साझा किया गया है।

उत्तर

47

यह पुरानी है, लेकिन मामला किसी में चारों ओर एक जवाब की तलाश में चला जाता है, यह मणि का उपयोग कर की तुलना में काफी आसान है। बस DATABASE_URL और SHARED_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 को पढ़ेगा और उस से डेटाबेस.आईएमएल उत्पन्न करेगा। डिफ़ॉल्ट पोर्ट पहले से ही 3306 है इसलिए आपके मामले में यूआरएल में इसकी आवश्यकता नहीं है। तब

-----> 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 पर एक नज़र डालें। मैं इसका उपयोग नहीं कर रहा हूं, लेकिन यह आपको एक अंतर्दृष्टि देता है कि आपको क्या करना है और कैसे हेरोकू डेटाबेस प्रबंधित करता है - मूल रूप से आपको अपने mysql उदाहरण में कॉन्फ़िगर चर को सेट करने की आवश्यकता होती है।

1

हेरोोकू आपके डेटाबेस.आईएमएल को अनदेखा करता है। आपको अमेज़ॅन आरडीएस समाधान जॉन बेयोन का सुझाव दिया जाना चाहिए या कुछ अन्य समान एडन (यदि कोई है तो) का पता लगाने की आवश्यकता होगी। आईएमओ, आपको या तो अपने MySQL डीबी का उपयोग करने या कुछ अन्य होस्टिंग खोजने के लिए अपनी आवश्यकता का फिर से मूल्यांकन करना होगा। बस मामले में आप पहले से ही यह पता नहीं था, आदेश:

heroku db:push 

दोनों स्कीमा और Heroku के Postgres डेटाबेस में अपने MySQL विकास डेटाबेस का डेटा नकल होगा। तो देव के लिए MySQL के साथ चिपके हुए कोई समस्या नहीं है।

मुझे उम्मीद है कि इससे मदद मिलती है।

+0

मुझे पता चला कि मेरे डेटाबेस को अनदेखा कर दिया गया है।yml और मैंने DATABASE_URL को इसके साथ कॉन्फ़िगर करने का प्रयास किया: कॉन्फ़िगरेशन: DATABASE_URL = mysql2: // उपयोगकर्ता: पासवर्ड @ होस्ट/डीबीनाम जोड़ें लेकिन काम न करें, ऐप अमेज़ॅन सर्वर पर डीबी की तलाश में है। यह लॉग से है: /app/.bundle/gems/ruby/1.8/gems/mysql2-0.2.6/lib/mysql2/client.rb:37:in 'कनेक्ट': उपयोगकर्ता 'etok' @ 'ec2 के लिए एक्सेस अस्वीकृत -174-129-89-188.compute-1.amazonaws.com '(पासवर्ड का उपयोग: हाँ) (MySQL 2 :: त्रुटि) – dormitkon

8

मैंने एक मणि लिखा है जो इससे मदद कर सकता है। आप इसे पा सकते हैं:

http://github.com/nbudin/heroku_external_db

+0

धन्यवाद नेट। मैं आपके मणि का उपयोग एक महीने के लिए कर रहा हूं और यह ठीक काम करता है! – Dorian

+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 

, कार्य करें: जब आप को तैनात है, तो आप देख सकते हैं कि यह आपके database.yml उत्पन्न करता है। एक

Heroku restart 

है कि चाहिए

महत्वपूर्ण नोट:। मैं सुझाव है कि आप डेटाबेस मेजबान आईपी पते का उपयोग करने के हॉवर्ड नाम देने वाली कुछ साझा होस्टिंग सेवाओं के साथ होस्टनाम को सीधे, कोज़ देने का उपयोग करने के बजाय, डीबी होस्टनाम उपयोगकर्ता 345432.abcd.godaddy.com और ऐसा लगता है जैसे Heroku इसे ठीक से हल करने में असमर्थ है (व्यक्तिगत अनुभव) , मैंने मेजबाननाम को आईपी पते पर हल किया और आईपी का उपयोग सीधे एक आकर्षण की तरह काम किया! साथ ही, यदि आपके डेटाबेस पासवर्ड में विशेष वर्ण हैं, तो सुनिश्चित करें कि आप उन्हें सही तरीके से बचें (जैसे '!!' के लिए '!!' और इसी तरह ..)

संबंधित मुद्दे