रूबी डेटाबेस के लिए MySQL विन्यास को सही करें। डेटाबेस फ़ाइल


90

मेरे पास यह कॉन्फ़िगरेशन है:

development:
  adapter: mysql2
  encoding: utf8
  database: my_db_name
  username: root
  password: my_password
  host: mysql://127.0.0.1:3306

और मुझे यह त्रुटि मिल रही है:

Unknown MySQL server host 'mysql://127.0.0.1:3306' (1)

क्या कुछ स्पष्ट है कि मैं गलत कर रहा हूं?

जवाबों:


198

आपको होस्ट को पोर्ट नंबर से अलग करना चाहिए। आपके पास कुछ हो सकता है, जैसे:

development:
  adapter: mysql2
  encoding: utf8
  database: my_db_name
  username: root
  password: my_password
  host: 127.0.0.1
  port: 3306

3
और मेजबान नहीं हो सकता हैhost: localhost
एड्रियन सी।

सुरक्षा कारणों से, इसे आमतौर पर rootउत्पादन डेटाबेस उपयोगकर्ता के रूप में उपयोग करने के लिए बुरा अभ्यास माना जाता है । अपने रेल एप्लिकेशन के लिए एक समर्पित उपयोगकर्ता सेट करने के लिए, उपयोगकर्ता निर्माण के बारे में MySQL डॉक्स देखें ।
फेलिक्स मोंटेज़

1
सुरक्षा कारणों से भी (यदि आप संस्करण नियंत्रण का उपयोग कर रहे हैं) तो आपको अपना डेटाबेस पासवर्ड स्टोर नहीं करना चाहिए database.yml। इसके बजाय, user3118220 ने क्या किया और अपने पर्यावरण से प्राप्त करें password: ENV['MY_RAILS_APP_DB_PASSWORD']:।
फेलिक्स मोंटेज़

17

आप भी इस तरह कर सकते हैं:

default: &default
  adapter: mysql2
  encoding: utf8
  username: root
  password:
  host: 127.0.0.1
  port: 3306

development:
  <<: *default
  database: development_db_name

test:
  <<: *default
  database: test_db_name

production:
  <<: *default
  database: production_db_name

3

सभी यूनिकोड (इमोजी सहित) को कवर करने के लिए एन्कोडिंग के रूप में 'utf8mb4' का उपयोग करें

default: &default
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_bin
  username: <%= ENV.fetch("MYSQL_USERNAME") %>
  password: <%= ENV.fetch("MYSQL_PASSWORD") %>
  host:     <%= ENV.fetch("MYSQL_HOST") %>

( संदर्भ 1 ) ( संदर्भ २ )


2

यदि आपके पास एक खाली config / database.yml फ़ाइल हो सकती है तो ENV ['DATABASE_URL'] चर को परिभाषित करें, फिर यह काम करेगा

$ cat config/database.yml
 
$ echo $DATABASE_URL
mysql://root:my_password@127.0.0.1:3306/my_db_name

हरोकू के लिए: हरोकू कॉन्फिग: सेट DATABASE_URL='mysql://root:my_password@host.com/my_db_name'


0

यदि आपके पास परीक्षण और विकास के लिए कई डेटाबेस हैं तो यह मदद कर सकता है

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost
production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost

1
कैसे shostअलग है host?
कोन्याक

0

इनमें से किसी भी एवर ने मेरे लिए काम नहीं किया, मुझे वर्नर बिहल का जवाब मिला जिसने समस्या को ठीक कर दिया।

सॉकेट '/var/run/mysqld/mysqld.sock' "त्रुटि के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो पा रहा है" रूबी ऐप पर रूबी के लिए mysql डेटाबेस की स्थापना

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.