রেল অন রেল ডাটাবেস.আইএমএল ফাইলের জন্য মাইএসকিউএল কনফিগারেশন সংশোধন করুন


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

4
এবং হোস্ট হতে পারে নাhost: localhost
অ্যাড্রিয়ান সি

সুরক্ষার কারণে, সাধারণত rootউত্পাদন ডেটাবেস ব্যবহারকারী হিসাবে ব্যবহার করা খারাপ অভ্যাস হিসাবে বিবেচিত হয় । আপনার রেল অ্যাপ্লিকেশনটির জন্য উত্সর্গীকৃত ব্যবহারকারী সেট আপ করতে, ব্যবহারকারী তৈরি সম্পর্কে মাইএসকিউএল ডক্স দেখুন ।
ফেলিক্স মন্টেজ

4
সুরক্ষার কারণে (আপনি যদি সংস্করণ নিয়ন্ত্রণ ব্যবহার করছেন) আপনার ডাটাবেস পাসওয়ার্ডটি ভিতরে সংরক্ষণ করা উচিত নয় 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 )


2

আপনার যদি খালি কনফিগারেশন / ডাটাবেস.আইএমএল ফাইল থাকতে পারে তবে 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

4
এর shostচেয়ে আলাদা কীভাবে host?
কোনাক

0

এই উত্সগুলির কোনওটিই আমার পক্ষে কাজ করেনি, আমি ওয়ার্নার বিহলের উত্তর খুঁজে পেয়েছি যা সমস্যার সমাধান করেছে।

"সকেটের মাধ্যমে স্থানীয় মাইএসকিউএল সার্ভারের সাথে সংযোগ দিতে পারছি না '/var/run/mysqld/mysqld.sock'" রেল অন অ্যাপে রুবির জন্য মাইএসকিএল ডাটাবেস স্থাপন করার সময় ত্রুটি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.