রুবেলগুলিতে রুবি 3 ওএসএক্সে '/tmp/mysql.sock' সকেটের মাধ্যমে স্থানীয় মাইএসকিউএল সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না


85

আমার কাছে স্ট্যান্ডার্ড রেল 3 এনভায়রনমেন্ট, আরভিএম 1.2.9, রেলগুলি 3.0.5, রুবি 1.9.2p180, মাইএসকিউএল 2 জহর 0.2.7, মাইএসকিএল -5.5.10-ওএসএক্স 10.6-x86_64

rake db:migrateডাটাবেস তৈরি করতে দৌড়ানোর সময় আমি যে ত্রুটি পেয়েছি তা হ'ল:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

কনফিগারেশন / ডাটাবেস.আইএমএল আছে

development:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx

নিশ্চিত যে এটি আমি কিছু সাধারণ অনুপস্থিত।


4
সকেট ফাইল উপস্থিত আছে? সম্ভবত এটি অন্য কোথাও উপস্থিত রয়েছে (/var/lib/mysql/mysql.sock)?
আইমান্তাস

না, নেই। আমি একটি তৈরি করার চেষ্টা করব।
জেমি বুচানন

এই সমস্যাগুলির মূল বিষয় বা ওএস স্তরে ..
আরজিবি

উত্তর:


212

প্রথমে আপনার সকেট ফাইলটি সন্ধান করতে:

mysqladmin variables | grep socket

আমার জন্য, এটি দেয়:

| socket                                            | /tmp/mysql.sock                                                                                                        |

তারপরে, আপনার একটি লাইন যুক্ত করুন config/database.yml:

development:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /tmp/mysql.sock

17
রুটে যদি আপনার একটি পাসওয়ার্ড থাকে, তা করুন: "মাইসক্ল্যাডমিন -পিএক্সএক্সএক্সএক্সএক্স ভেরিয়েবলস | গ্রেপ সকেট" যেখানে এক্সএক্সএক্সএক্সএক্স আপনার মূল পাসওয়ার্ড
অ্যাবে পেট্রিলো

এটি কীভাবে কাজ করে সে সম্পর্কে আমি বিভ্রান্ত; আপনি তালিকাভুক্ত প্রথম কমান্ডটি কোথায় / কীভাবে প্রবেশ করবেন? আমি যখন এটি টার্মিনালে প্রবেশ করি, তখন এটি প্রতিবেদন করে:mysqladmin: command not found
কোডবিকার

4
আপনি যে কোনও ফোল্ডারে কমান্ডটি প্রবেশ করতে পারেন। Command not foundআপনার মাইএসকিএল ইনস্টল করা নেই বলে ইঙ্গিত দেয়।
ম্যাগনে

4
যদিও আমার কাছে কোনও পাসওয়ার্ড ছিল না তবুও আমাকে ব্যবহারকারীকে মূল হিসাবে নির্দিষ্ট করতে হয়েছিল: মাইসক্ল্যাডমিন-ইউ রুট ভেরিয়েবলগুলি
গ্রেপ

4
@ কোডডাইকার এফওয়াইআই: লিনাক্স শেলগুলি কার্যক্ষম ডিরেক্টরি থেকে অযোগ্য প্রোগ্রামের নামগুলি চালিত করার প্রবণতা রাখে না (যদি তা স্পষ্টভাবে এটিতে থাকে না PATH) - আপনাকে স্পষ্ট হতে হবে, উদাহরণস্বরূপ ./program_name ...। এর অর্থ হ'ল বাস্তবায়িত প্রোগ্রামটি আপনি যেখান থেকে চালানোর চেষ্টা করছেন তার থেকে আলাদা হয়ে থাকে।
mwfearnley

87

খুঁজে পেয়েছি!

স্থানীয় সকেটের পরিবর্তে রেলটিকে টিসিপি / আইপি দিয়ে সংযুক্ত করতে host: localhostকনফিগারেশন / ডাটাবেস.আইএমএল এ পরিবর্তন করুন host: 127.0.0.1

development:
  adapter: mysql2
  host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx

7
Mysql.sock ফাইলের অবস্থান এবং কনফিগারেশন /
ডাটাবেস.আইএমএল-এ

4
টিসিপি / আইপি দিয়ে সকেট ব্যবহারের সুবিধা কী? দুঃখিত - আমি রেলস এবং ইউনিক্সে বেশ নতুন
জ্যামি বুচানান

4
ইউনিক্স সকেটের টিসিপি / আইপি সকেটের চেয়ে কম ওভারহেড রয়েছে।
টোবিয়াস কোহেন

4
ধন্যবাদ! আমি রেলগুলির বাইরে এই সমস্যাটি ছুঁড়েছি (মাইএসকিএল রত্ন ব্যবহার করে) এবং এই সমাধানটি কার্যকর হয়েছে। আমার কাছে রুট অ্যাক্সেস নেই তাই আমি সকেট ফাইলের জন্য অন্য কোনও স্থান ব্যবহার করার জন্য মণিটি সংশোধন করতে পারি না। এই কৌশলটি আমার মাথাব্যথা বাঁচিয়েছিল।
সজুদি

4
এই উত্তরটি আমাকে অন্যভাবে সহায়তা করেছে। লোকালহোস্ট 3306 প্রকাশের সাথে আমি একটি ডকেরিজড মাইএসকিএল উদাহরণের বিরুদ্ধে আমার রেল অ্যাপ্লিকেশন চালাচ্ছি। এই সেটআপটির একটি পার্শ্ব প্রতিক্রিয়া হ'ল আপনি লোকালহোস্টের মাধ্যমে সংযোগ করতে পারলেও, আপনি কেবল চিন্তাধারার টিসিপি সংযোগ করতে পারেন যেহেতু মাইএসকিএল একই মেশিনের পরিবর্তে কোনও ভিএম-তে চলছে, সুতরাং কোনও সকেট সংযোগ নেই। এর পরিবর্তে, রেলগুলি টিসিপি ব্যবহারের বাধ্যতামূলক করাই এখানে উত্তর, কারণ দুর্ভাগ্যক্রমে আমার কাছে পাওয়া আরও ভাল বিকল্প বলে মনে হয় না।
ব্রায়ান

11

আপনার মাইএসকিএল সার্ভারটি চলমান নাও থাকতে পারে। নীচে সার্ভারটি কীভাবে শুরু করবেন তা ব্যাখ্যা করে। এটি README ফাইলের একটি অংশ যা মাইএসকিএল ডাউনলোডের সাথে আসে।

ইনস্টলেশনের পরে, আপনি টার্মিনাল উইন্ডোতে নিম্নলিখিত কমান্ডগুলি চালিয়ে মাইএসকিউএল শুরু করতে পারেন। এই কাজটি সম্পাদন করার জন্য আপনার অবশ্যই প্রশাসকের অধিকার থাকতে হবে।

আপনি যদি স্টার্টআপ আইটেমটি ইনস্টল করেন তবে এই কমান্ডটি ব্যবহার করুন:

 shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
 (ENTER YOUR PASSWORD, IF NECESSARY)
 (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)

আপনি যদি স্টার্টআপ আইটেমটি ব্যবহার না করেন তবে নিম্নলিখিত কমান্ড ক্রমটি প্রবেশ করুন:

 shell> cd /usr/local/mysql
 shell> sudo ./bin/mysqld_safe
 (ENTER YOUR PASSWORD, IF NECESSARY)
 (PRESS CONTROL-Z)
 shell> bg
 (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)

এই উত্তরটি আমাকে আমার ম্যাকের উপরে এই সমস্যাটি সমাধান করতে সহায়তা করেছে ... নিশ্চিত নয় কেন এই মন্তব্যটিকে উচ্চতর স্থান দেওয়া হয়নি। আপনি যখন মাইএসকিএল ইনস্টল করবেন তখন কনসোলে কিছু নোট প্রদর্শিত হবে। আমাকে নিম্নলিখিত কমান্ডগুলি চালাতে হয়েছিল। unset TMPDIRএবং mysql_install_db --verbose --user=হোয়ামি --baseir = "$ (ব্রিউ - প্রিফিক্স মাইএসকিএল)" "- দাতাদির = / ইউএসআর / লোকাল / ভার / ....then I had to start the server মাইএসকিএল --tmpdir = / টিএমপি mysql.server সূচনা
dmillion

পরিষেবাটির কাজ করা বন্ধ করা সম্ভব, এটি অবশ্যই প্রথম পরীক্ষা করা উচিত।
তাস

8

এই সমস্যাটি সমাধানের জন্য এই বিকল্পগুলি:

বিকল্প 1: আপনার হোস্টকে 127.0.0.1 এ পরিবর্তন করুন

staging:
  adapter: mysql2
  host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx
  socket: your-location-socket

বিকল্প 2: মনে হচ্ছে আপনার নিজের সার্ভার মাইএসকিউএলে 2 টি সংযোগ রয়েছে। আপনার সকেটের ফাইলের অবস্থানটি অনুসন্ধান করতে এটি করুন:

mysqladmin variables | grep socket

আমার জন্য:

mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!

বা

mysql --help 

আমি এই ত্রুটিটি পেয়েছি কারণ আমি পিএইচপি অ্যাপ্লিকেশনটির জন্য আমার ওএস এক্স সংস্করণ 10.9.5 এ এক্সএএমপিপি ইনস্টল করেছি। এখানে একটি ডিফল্ট সকেটের অবস্থান চয়ন করুন।

আমি ডিফল্ট রেল অ্যাপ্লিকেশনগুলির জন্য চয়ন করি:

socket: /tmp/mysql.sock

আমার পিএইচপি অ্যাপ্লিকেশনগুলির জন্য, আমি এক্সএএমপিপি ইনস্টল করি যাতে আমি আমার সকেটটি এখানে সেট করি:

socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

ওএস এক্সে অন্যদের সকেটের অবস্থান

এমএএমপিপির জন্য:

socket: /Applications/MAMP/tmp/mysql/mysql.sock

মাইএসকিউএল থেকে প্যাকেজ ইনস্টলার জন্য:

socket: /tmp/mysql.sock

ম্যাক ওএস এক্স সার্ভারের সাথে মাইএসকিউএল বান্ডিল হয়েছে:

socket: /var/mysql/mysql.sock

উবুন্টুর জন্য:

socket: /var/run/mysqld/mysql.sock

বিকল্প 3: এই সমস্ত সেটিং যদি কাজ না করে তবে আপনি আপনার সকেটের অবস্থানটি সরাতে পারবেন:

staging:
  # socket: /var/run/mysqld/mysql.sock

আমি আশা করি এটি আপনাকে সাহায্য করবে


এই আদেশটি socket: /var/run/mysqld/mysql.sock
সুন্দরভাবে

6

আপনি যখন MySQL সার্ভারটি শুরু করবেন তখন "/tmp/mysql.sock" স্বয়ংক্রিয়ভাবে তৈরি হবে। সুতরাং রেল সার্ভার শুরু করার আগে এটি করতে মনে রাখবেন।


3

ওএসএক্সে এমএএমপি স্থাপনের সাথে মাইএসকিউএল সকেটটি অবস্থিত /Applications/MAMP/tmp/mysql/mysql.sock। আমি locate mysql.sockআমার মাইএসকিউএল সকেটের অবস্থানটি সন্ধান করতাম।

সুতরাং আমার config/database.ymlচেহারা:

development:
  adapter: mysql2
  host: localhost
  username: root
  password: xxxx
  database: xxxx
  socket: /Applications/MAMP/tmp/mysql/mysql.sock

3

আপনি যদি ম্যাক ওএসএক্স এ থাকেন,

মাইএসকিউএল ইউনিক্স সকেটের জন্য ডিফল্ট অবস্থানটি ম্যাক ওএস এক্স এবং ম্যাক ওএস এক্স সার্ভারে আপনার পছন্দসই ইনস্টলেশন ধরণের উপর নির্ভর করে আলাদা is

মাইএসকিউএল ইউনিক্স সকেট ম্যাক ওএস এক্সে অবস্থিত ইনস্টলেশন ধরণের মাধ্যমে

  • মাইএসকিউএল ------------------ / tmp / mysql.sock থেকে প্যাকেজ ইনস্টলার

  • মাইএসকিউএল থেকে তারবাল ------------------------------- / টিএমপি / মাইএসকিএল.সোক

  • মাইএসকিউএল ম্যাক ওএস এক্স সার্ভার ------- / var / mysql / mysql.sock এর সাথে বান্ডিল হয়েছে

তাই শুধু আপনার পরিবর্তন database.yml মধ্যে socket: /tmp/mysql.sockবিন্দু সঠিক জায়গায় উপর নির্ভর করে কি OS এবং ইনস্টলেশন টাইপ আপনি ব্যবহার করছেন



1

আমারও একই সমস্যা ছিল, তবে উত্তরগুলির কোনওটিই আমার কী করা দরকার তা ধাপে ধাপে দেয় নি। এই ত্রুটিটি ঘটে কারণ আপনার সকেট ফাইলটি এখনও তৈরি হয়নি। আপনাকে যা করতে হবে তা হ'ল:

  1. আপনি মাইএসকিএল সার্ভার শুরু করুন, যাতে /tmp/mysql.sockআপনি চালিত হয় তা করতে আপনার তৈরি হয়:mysql server start
  2. এটি হয়ে গেলে, আপনার অ্যাপ ডিরেক্টরিতে যান config/database.ymlফাইলটি সম্পাদনা করুন এবং socket: /tmp/mysql.sockএন্ট্রি যুক্ত / সম্পাদনা করুন
  3. চালান rake:dbmigrateworkout আপনি জরিমানা আবার এবং সবকিছু উচিত

rake db:migrate*
ভিক্টর

0

আমি দেখতে পেয়েছি যে সমস্যাটি হ'ল আমার কেবলমাত্র একটি উত্পাদন পরিবেশ রয়েছে। আমার কোনও বিকাশ বা পরীক্ষার পরিবেশ নেই।

কমান্ড দেওয়ার জন্য 'RAILS_ENV = product' যুক্ত করে

bundle exec rake redmine:plugins:migrate RAILS_ENV=production

এটা কাজ করেছে


0

আপনি যদি এক্সএএমপিপি এর মাধ্যমে এমওয়াইএসকিউএল চালাচ্ছেন:

  1. এক্সএএমপিপি মাইএসকিএল কনফিগারেশন ফাইলটি খুলুন (ওএসএক্সে):

    / অ্যাপ্লিকেশনগুলি / এক্সএএমপিপি /etc/my.cnf

  2. সকেট পাথ অনুলিপি করুন:

    সকেট = / অ্যাপ্লিকেশনস / এক্সএএমপিপি / এক্স্যাম্পফিলস /var/mysql/mysql.sock

  3. রেল প্রকল্পের ডেটাবেস কনফিগারেশন ফাইলটি খুলুন: মাইপ্রজেক্ট / কনফিগারেশন / ডাটাবেস.আইএমএল

  4. বিকাশ ডাটাবেস কনফিগারেশনে সকেট কনফিগারেশন যুক্ত করুন:

->

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: difiuri_falcioni
  pool: 5
  username: root
  password:
  host: localhost
  socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
  1. রেল সার্ভার পুনরায় চালু করুন

উপভোগ করুন :)


0

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

উত্তর: do sudo পরিষেবা mysql শুরু


0

আমার মেশিনে মাইএসকিএলডি পরিষেবা বন্ধ হয়ে গেছে তাই এটি আমাকে একই সমস্যা দিচ্ছে।

1: - টার্মিনালে যান এবং টাইপ করুন

sudo service mysqld restart

এটি mysqld পরিষেবাটি পুনরায় আরম্ভ করবে এবং প্রয়োজনীয় স্থানে একটি নতুন সোক ফাইল তৈরি করবে।


-1

আপনি যদি উবুন্টু বা অন্যান্য লিনাক্সে এক্সএএমপিপি বা এলএএমপিপি এর মাধ্যমে এমওয়াইএসকিউএল চালাচ্ছেন তবে চেষ্টা করুন:

socket: /opt/lampp/var/mysql/mysql.sock

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