PDOException SQLSTATE [HY000] [2002] এরকম কোনও ফাইল বা ডিরেক্টরি নেই


319

আমি বিশ্বাস করি যে আমি সফলভাবে আমার (খুব বেসিক) সাইটটি ফোরট্রাবিটে সফলভাবে মোতায়েন করেছি, তবে কিছু কমান্ড চালানোর জন্য আমি এসএসএইচের সাথে সংযোগ করার সাথে সাথে (যেমন php artisan migrateবা php artisan db:seed) আমি একটি ত্রুটি বার্তা পেয়েছি:

[PDOException]
SQLSTATE[HY000] [2002] No such file or directory

কোনও এক মুহুর্তে মাইগ্রেশনটি অবশ্যই কাজ করেছে, কারণ আমার টেবিলগুলি রয়েছে - তবে এটি কেন এখন আমার জন্য কাজ করছে না তা ব্যাখ্যা করে না।



1
কখনও কখনও এটি কেবল কারণ আপনি এখনও
মাইএসকিএল

উত্তর:


142

ত্রুটি বার্তাটি নির্দেশ করে যে সকেটের মাধ্যমে একটি মাইএসকিউএল সংযোগ চেষ্টা করা হয়েছে (যা সমর্থিত নয়)।

লারাভেল (কারিগর) এর প্রসঙ্গে আপনি সম্ভবত অন্যরকম / সঠিক পরিবেশটি ব্যবহার করতে চান। যেমন: php artisan migrate --env=production(বা পরিবেশ যাই হোক না কেন)। এখানে দেখুন ।


1
এটিই ছিল আমার সমস্যার সমাধান, আমাদের সংস্থার একজন বিকাশকারী হোমস্টেড ব্যবহার করে না এবং সকেটের মাধ্যমে মাইএসকিএলে সংযুক্ত করে। আমি আমার অ্যাপ্লিকেশন / ডাটাবেস.এফপি ফাইলের মধ্যে সকেট কনফিগারেশন সরিয়েছি। সমস্যা সমাধান হয়েছে
বরিশলেমেকে

আমাকে কেবল php.ini এ mysqli.so এক্সটেনশন সক্ষম করতে হয়েছিল
মেহুলকুমার

4
আমাকে কনফিগার / ডাটাবেস.এফপি-তে "" ইউনিক্স_সকেট '=>' / অ্যাপ্লিকেশনস / এমএএমপি / টেম্প / মাইএসকিএল / মাইসকিএল.সক '"যুক্ত করতে হয়েছিল
কার্লোস দেল পোজো মুয়েলা

হ্যালো সম্প্রদায়, আমি এই ত্রুটিটি পাচ্ছি যদিও আমি লারাভেল ব্যবহার করছি না আপনি কি সমস্যাটি এখানে দেখতে পারেন এটি স্ট্যাকওভারফ্লো
কিরণ প্যাটেল

655

ল্যারাভেল 4:app/config/database.php "লোকালহোস্ট" থেকে "127.0.0.1" এ ফাইলটিতে "হোস্ট" পরিবর্তন করুন

ল্যারাভেল 5:.env "লোকালহোস্ট" থেকে "127.0.0.1" এ ফাইলটিতে "ডিবি_হোস্ট" পরিবর্তন করুন

আমার ঠিক একই সমস্যা ছিল. উপরের সমাধানগুলির কোনওটিই আমার পক্ষে কার্যকর হয়নি। আমি "লোকালহোস্ট" থেকে "127.0.0.1" এ / অ্যাপ্লিকেশন / কনফিগ / ডেটাবেস.এফপি ফাইলটিতে "হোস্ট" পরিবর্তন করে সমস্যার সমাধান করেছি।

কেন "লোকালহোস্ট" ডিফল্টরূপে কাজ করে না তা নিশ্চিত নই তবে আমি এই উত্তরটি একটি সিমফনি 2 পোস্টে সমাধান করা অনুরূপ প্রশ্নের মধ্যে পেয়েছি। https://stackoverflow.com/a/9251924/1231563

আপডেট: কিছু লোক জিজ্ঞাসা করেছে যে এই ফিক্সটি কেন কাজ করে তাই আমি বিষয়টি নিয়ে একটু গবেষণা করেছি। দেখে মনে হচ্ছে তারা https://stackoverflow.com/a/9715164/1231563 এ বর্ণিত বিভিন্ন সংযোগের প্রকারগুলি ব্যবহার করে

এখানে উত্থাপিত সমস্যাটি হ'ল "লোকালহোস্ট" একটি ইউনিক্স সকেট ব্যবহার করে এবং স্ট্যান্ডার্ড ডিরেক্টরিতে ডাটাবেসটি খুঁজে পায় না। তবে "127.0.0.1" টিসিপি (ট্রান্সমিশন কন্ট্রোল প্রোটোকল) ব্যবহার করে, যার মূল অর্থ এটি আপনার কম্পিউটারে "স্থানীয় ইন্টারনেট" এর মাধ্যমে ইউএনআইএক্স সকেটের চেয়ে অনেক বেশি নির্ভরযোগ্য হয়ে থাকে।


3
আশ্চর্যজনক যে এটি আমার জন্যও সমাধান ছিল, তবে আমি কমান্ড লাইন থেকে mysql --host = লোকালহোস্টের সাথে সংযোগ করতে সক্ষম হয়েছি - এটি পিডিও থেকে নয় from
জন

26
আমি কেন localhostকাজ করে না এবং 127.0.0.1তা জানতে আগ্রহী ??
জাস্টিন

6
কমান্ড লাইনে (টার্মিনাল) পিএইচপি ফাইল চালাচ্ছেন এমন একটি এমএএমপি সিস্টেমে এটি আমার পক্ষে কাজ করেছিল। এটি একটি ওয়েবপৃষ্ঠা হিসাবে কাজ করেছে তবে কমান্ড লাইন ফাইল হিসাবে নয় যতক্ষণ না আমি লোকালহোস্টকে '127.0.0.1' এ পরিবর্তন করেছি
স্যামুয়েল ফুলম্যান

1
@ জাস্টিন আমি মনে করি এটি কারণ হ'ল লোকালহোস্ট সকেট ব্যবহার করার চেষ্টা করে, যখন 127.0.0.1 টিসিপি ব্যবহার করে।
315

10
A Unix socket file is used if you do not specify a host name or if you specify the special host name localhost. dev.mysql.com/doc/refman/5.7/en/can-not-connect-to-server.html
এক্স-

94

আমি একই সমস্যা পেয়েছি এবং আমি ম্যাক ওএস এক্স 10.10 ইয়োসেমাইট চালাচ্ছি। আমি অ্যাপাচি সার্ভার এবং পিএইচপি সক্ষম করেছি যা ইতিমধ্যে ওএস এর সাথে আসে। তারপরে আমি শুরু করার জন্য সবেমাত্র এমক্রিপ্ট লাইব্রেরিটি কনফিগার করেছি। এর পরে যখন আমি মডেলগুলি এবং ডিবি নিয়ে কাজ করছিলাম তখন আমি ত্রুটিটি পেয়েছি:

[PDOException]
SQLSTATE[HY000] [2002] No such file or directory

আমি খুঁজে পাওয়ার কারণটি কেবল পিএইচপি এবং মাইএসকিউএল নিজেরাই সংযুক্ত হতে পারে না। এই সমস্যাটি স্থির করতে আমি পরবর্তী পদক্ষেপগুলি অনুসরণ করি:

  1. একটি টার্মিনাল খুলুন এবং এর সাথে মাইএসকিএলে সংযুক্ত করুন:

    mysql -u root -p
  2. এটি আপনাকে সম্পর্কিত পাসওয়ার্ডের জন্য জিজ্ঞাসা করবে। তারপরে আপনি যখন মাইএসকিএল প্রম্ট পাবেন পরবর্তী কমান্ডটি টাইপ করুন:

    mysql> show variables like '%sock%'
  3. আপনি এরকম কিছু পাবেন:

    +-----------------------------------------+-----------------+
    | Variable_name                           | Value           |
    +-----------------------------------------+-----------------+
    | performance_schema_max_socket_classes   | 10              |
    | performance_schema_max_socket_instances | 322             |
    | socket                                  | /tmp/mysql.sock |
    +-----------------------------------------+-----------------+
  4. শেষ সারিটির মান রাখুন:

    /tmp/mysql.sock
  5. আপনার laravelপ্রকল্প ফোল্ডারে, আপনি ডিবি সংযোগের পরামিতিগুলি কনফিগার করেছেন সেখানে ডাটাবেস.এফপি ফাইলটি সন্ধান করুন । ইন মাইএসকিউএল অধ্যায় শেষে পরের লাইনে যোগ করুন:

    'unix_socket' => '/tmp/mysql.sock'
  6. আপনার অবশ্যই এই জাতীয় কিছু থাকতে হবে:

    'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'SchoolBoard',
            'username'  => 'root',
            'password'  => 'venturaa',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'unix_socket' => '/tmp/mysql.sock',
        ),

এখন কেবল পরিবর্তনগুলি সংরক্ষণ করুন, এবং পৃষ্ঠাটি পুনরায় লোড করুন এবং এটি অবশ্যই কাজ করবে!


3
সর্বাধিক "ইস্যু থেকে সরাসরি" সমাধান থ্যাঙ্কস, এটি এমএএমপি প্রো
অ্যানিম্যাটিজ

এর জন্য ধন্যবাদ. এটি আমার পক্ষে কাজ করেছে। OSX 10.10.5 এমএএমপি প্রো
মার্কেন্ট

এটি এমএএমপি প্রো এবং ওএস এক্স 10.11.x এর সাথেও আমার পক্ষে কাজ করেছে শেষ হয়েছে:/Applications/MAMP/tmp/mysql/mysql.sock
বোর্ট লাইসেন্স প্লেট

1
+1 টি। ইয়ামার্টিনো তার উত্তরে বলেছিলেন যে "লোকালহোস্ট" পরিবর্তে কনফিগারেশনে "127.0.0.1" ব্যবহার করা ভালভাবে কাজ করে তবে এটি একটি সকেটের সাথে দ্রুততর হয় এবং এই উত্তরটি সমস্যার সমাধান করে। যদিও ইউনিক্স_সকেট সংজ্ঞায়িত করা হয়েছে ...
শৌটিহ

@ গ্রেগফেরেল হ্যাঁ এটি সত্য তবে ভাল ... আমি আশা করি এটি কার্যকর হতে পারে
alexventuraio

51

আমি [PDOException] SQLSTATE[HY000] [2002] No such file or directoryঅন্য কারণে ত্রুটির মুখোমুখি হয়েছি । আমি সবেমাত্র অ্যাবাচি ২.৪..7, পিএইচপি v5.5.10 এবং মাইএসকিউএল 5.6.16 সহ উবুন্টু 12.04 এ একটি ব্র্যান্ড নিউ ল্যাম্প স্ট্যাক নির্মাণ শেষ করেছি। আমি আমার সাইটগুলি আবার সরিয়ে নিয়েছি এবং সেগুলি সরিয়ে ফেলেছি। তবে, [PDOException]উপরের কারণে আমি আমার লারাভেল ৪.২.x ভিত্তিক সাইটটি লোড করতে পারিনি । সুতরাং, আমি php -i | grep pdoএই লাইনটি পরীক্ষা করে দেখেছি:

pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

তবে, আমার /etc/my.cnf এ মোজা ফাইলটি আসলে /var/run/mysqld/mysqld.sock

সুতরাং, আমি আমার php.ini খুললাম এবং এর মান নির্ধারণ করেছি pdo_mysql.default_socket:

pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock

তারপরে, আমি অ্যাপাচি পুনরায় শুরু করে চেক করেছি php -i | grep pdo:

pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock

এটা আমার জন্য এটি স্থির।


এটি ছিল আমার জন্য কাজ করা সমস্যা, সমস্যাটি হ'ল আমি মাইএসকিএল-র দুটি সংস্করণ ইনস্টল করেছি এবং একটি মুছে ফেলেছি, 127.0.0.1 পরিবর্তনটি কাজ করে না বা কনফিগরে মোজা যোগ করে, ধন্যবাদ! @ ডিকারিথ
লুইস

2
এটি আমার সমস্যা সন্ধান করতে সহায়তা করেছিল - যা আমি OSX বান্ডিল পিএইচপি ব্যবহার করছিলাম, এমএএমপি পিএইচপি বাইনারি নয় inary সুতরাং নিশ্চিত হয়ে নিন যে আপনি পিএইচপি-র সঠিক সংস্করণ ব্যবহার করছেন যা সঠিক পিএইচপি.এন.আই.কে নির্দেশ করে, ইত্যাদি। মুহূর্ত।
ড্রাগনফ্লাইস্কে

একমাত্র উত্তর যা আমার পক্ষে কাজ করেছিল। ধন্যবাদ।
শাহরুখ আনোয়ার

43

@ স্টুয়ামের উত্তর আমার জন্য "এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" সমস্যাটি সমাধান করেছে

সংক্ষিপ্ত উত্তর: "লোকালহোস্ট" থেকে "127.0.0.1" এ / অ্যাপ্লিকেশন / কনফিগ / ডেটাবেস.এফপি ফাইলের "হোস্ট" পরিবর্তন করুন

তবে তখন আমার একটি "সংযোগ অস্বীকার" ত্রুটি হয়েছিল had কারও যদি একই সমস্যা থাকে তবে এর জন্য আমার সমাধানটি অ্যাপ্লিকেশন / কনফিগারেশন / স্থানীয় / ডাটাবেস.এফপি ফাইল আপডেট করা ছিল যাতে পোর্টটি 8889 হয়:

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '127.0.0.1',
        'port'      => '8889',
        'database'  => 'databaseName',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

4
আমার ক্ষেত্রে এটি ছিল 'port' => '33060'তবে এই উত্তরটি আমাকে সেখানে পেয়েছে!
mopo922

25

আপনি যদি লারাভেল হোমস্টেড ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে আপনি সার্ভারে কমান্ডগুলি কল করছেন।

homestead ssh

তারপরে ডান ডিরেক্টরিতে সিডি করুন এবং আপনার কমান্ডটি সেখানে ফায়ার করুন।


2
এটি কাজ করে, আমি আমার কম্পিউটার থেকে ভিএম-তে প্রথমে এসএমএস না দিয়ে কমান্ড চালাচ্ছিলাম এবং সেখানে কমান্ড চালাচ্ছি।
cmac

আমি সবসময় এই পদক্ষেপটি ভুলে যাই। হেহ। 1. source ~/.zshrc2. homestead up --provision3.homestead ssh
মার্সেল

1
vagrant sshআমার ক্ষেত্রে
মার্কোস কারভেলো

22

আমার ক্ষেত্রে আমার কোনও সমস্যা ছিল না, কেবল মাইএসকিএল পরিষেবা শুরু করতে ভুলে গেছি ...

sudo service mysqld start

19

ম্যাম্প ব্যবহারকারী সক্ষম বিকল্পটি এমওয়াইএসকিউএলে নেটওয়ার্ক অ্যাক্সেসের অনুমতি দিন

এখানে চিত্র বর্ণনা লিখুন


18

উদাহরণস্বরূপ ডাটাবেস.এফপি ফাইলের মধ্যে mysql.sock পাথ যুক্ত করুন

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

Eample

'mysql' => [
        'driver' => 'mysql',
        'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '8889'),

18

এটা তোলে থেকে আমি পরিবর্তনের পর কাজ DB_HOST=localhostকরতে DB_HOST=127.0.0.1.env ফাইলের দিকে


2
এই কাজ করেছে, আপনি ঠিক বলেছেন। কেন localhostকাজ করে না তা ব্যাখ্যা করার কোনও ধারণা আছে ?
ফিউশন

1
@ ফিউশন আপনি যদি কোনও অ্যাপ্লিকেশন একটি কনটেইনারের ভিতরে চালাচ্ছেন তবে এটি 'লোকালহোস্ট'টিকে কনটেইনার হিসাবে বুঝতে পারবে, 127.0.0.1 এটিকে হোস্টের ডিবি ব্যবহার করতে বলে
ডিথ্যাথেম্পারার

আমারও এ জাতীয় সমস্যা ছিল, ক্যাশে সাফ করতে বা কারিগর পরিবেশন চালাতে পারিনি
টম ময়েন্ডা

17

এটি কারণ PDO "লোকালহোস্ট" হোস্টকে বিশেষভাবে আচরণ করে:

দ্রষ্টব্য: ইউনিক্স কেবল: হোস্টের নামটি "লোকালহোস্ট" এ সেট করা থাকলে সার্ভারের সাথে সংযোগটি একটি ডোমেন সকেটের মাধ্যমে তৈরি করা হয়। PDO_MYSQL যদি libmysqlclient এর বিপরীতে সংকলিত হয় তবে সকেটের ফাইলের অবস্থানটি libmysqlclient এর স্থানে সংকলিত আছে। পিডিও_এমওয়াইএসকিউএল মাইএসকিএলডের বিপরীতে সংকলিত থাকলে পিডো_মাইসকিএল.ডিফফল_সকেট সেটিংসের মাধ্যমে একটি ডিফল্ট সকেট সেট করা যায়।

( http://php.net/manual/en/ref.pdo-mysql.connection.php থেকে )

লোকালহোস্টকে 127.0.0.1 এ পরিবর্তন করা টিসিপি ব্যবহারকে "বাধ্য" করবে।

দ্রষ্টব্য: mysqli_connect লোকালহোস্টের সাথে দুর্দান্ত কাজ করছে।


12

@ ডিকারিথ থেকে উত্তর তৈরি করা ...

কনফিগার ফাইলগুলিকে সম্পাদনা করার পরিবর্তে, আমি পিএইচপি যে অবস্থানটি দেখছি যা সেখানে আসল mysql.sock এর সাথে সংযোগ স্থাপন করে সেখানে একটি উপনাম তৈরি করেছি। ( উত্স )

কেবলমাত্র এই দুটি কমান্ড চালান (পুনরায় আরম্ভের প্রয়োজন নেই):

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

11

ধাপ 1

এটি চালানোর জন্য আপনার ইউনিক্স_সকেটের পথটি সন্ধান করুন netstat -ln | grep mysql

আপনার এই জাতীয় কিছু পাওয়া উচিত

unix  2      [ ACC ]     STREAM     LISTENING     17397    /var/run/mysqld/mysqld.sock

ধাপ ২

যে নিন এবং আপনার এটি যোগ unix_socket PARAM

'mysql' => array(
            'driver'    => 'mysql',
            'host'      => '67.25.71.187',
            'database'  => 'dbname',
            'username'  => 'username',
            'password'  => '***',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'unix_socket'    => '/var/run/mysqld/mysqld.sock' <-----
            ),
        ),

আশা করি এটা সাহায্য করবে !!


8

আমি এমএএমপি প্রোতে চলেছি এবং মাইগ্রেশন করার চেষ্টা করার সময় (ডিবি টেবিলগুলি তৈরি করতে) একই ধরণের সমস্যা হয়েছিল। উল্লিখিত কয়েকটি পরামর্শের পাশাপাশি চেষ্টা করেও আমার পক্ষে তা করেন নি।

সুতরাং, কেবল (এক ঘন্টা গুগল করার পরে), আমি /config/datedia.php এ দুটি জিনিস যুক্ত করেছি।

'port' => '1234',
'unix_socket' => '/path/to/my/socket/mysqld.sock'

এখন ঠিক কাজ করে!


4

সাবধানে আপনার বন্দর পরীক্ষা করুন। আমার ক্ষেত্রে এটি 8889 ছিল এবং আমি 8888 ব্যবহার করছি "" লোকালহোস্ট "থেকে" 127.0.0.1 "" DB_HOST "পরিবর্তন করুন এবং বিপরীতে


দুর্দান্ত, আপনাকে ধন্যবাদ, আমার বন্দরটি 3306 ছিল তবে আমার আসল বন্দরটি 8889
ডেভিড

4

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

সমাধানটি আমি মাইএসকিউএল পরিষেবা কনটেইনারটির নামটি docker_compose.ymlডিবিহস্ততে ব্যবহার করেছিলাম using আমার ক্ষেত্রে, এটি ছিল db:

DB_HOST=db

আশা করি এটা সাহায্য করবে.


2

লারাভেল 5 হিসাবে ডাটাবেস ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রকল্প ডিরেক্টরিতে বিদ্যমান .env ফাইলে যায়, যেমন

DB_HOST=127.0.0.1
DB_DATABASE=db1
DB_USERNAME=user1
DB_PASSWORD=pass1

আপনি দেখতে পাচ্ছেন যে এই পরিবেশের ভেরিয়েবলগুলি এখানে 'ফরজ' স্ট্রিংগুলিকে ওভাররাইড করছে তাই এগুলি পরিবর্তন করার কোনও প্রভাব নেই:

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

আরও তথ্য এখানে https://mattstauffer.co/blog/laravel-5.0-en পরিবেশ- সনাক্তকরণ- এবং- পরিবেশ- পরিবর্তনশীল


2

এলিক্সির / গুল্পে পিএইচপিউনিট চালানোর সময় এবং হোস্টস্টেডকে আমার ভ্যাগ্র্যান্ট এনভায়রনমেন্ট হিসাবে চালানোর সময় আমি এই সমস্যায় পড়েছিলাম।

আমার ক্ষেত্রে আমি থেকে .env ফাইল সম্পাদিত DB_HOST=localhostকরার জন্য DB_HOST=192.168.10.10যেখানে 192.168.10.10আমার দ্য ভাগ্রান্ট / বাস্তু হোস্ট IP নির্ধারিত হবে।


2

লোকালহোস্টের সাথে সংযোগ স্থাপনের চেষ্টা:

SQLSTATE[HY000] [2002] No such file or directory

127.0.0.1 এ সংযোগ করার চেষ্টা:

SQLSTATE[HY000] [2002] Connection refused

ঠিক আছে, প্রাপ্ত করার জন্য কেবল my.cnf (ওএস এক্স 10.5 তে /opt/local/etc/mysqlxx/my.cnf) থেকে নীচের সেটিংটি মন্তব্য / সরিয়ে ফেলুন :

[mysqld]
# skip-networking

অবশ্যই, বন্ধ করুন এবং মাইএসকিউএল সার্ভার শুরু করুন।


2

আমার ড্রুপাল ওয়েবসাইট অ্যাক্সেস করতে আমার একইরকম সমস্যা হয়েছিল। কমান্ড লাইনটি খোলার মাধ্যমে, এবং আমার মাইএসকিউএল সার্ভার বা পরিষেবাটি পুনরায় চালু করে আমি এটি ঠিক করেছি:

service mysqld restart

এই কাজ করা উচিত. যদি এটি না হয় তবে আপনার স্থানীয় ওয়েব সার্ভারটি পুনরায় চালু করুন:

service httpd restart

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


1

আপনি যদি লারাভেল হোমস্টিড ব্যবহার করছেন তবে সেটিংসটি এখানে

(ভ্যাগ্র্যান্ট-ভার্চুয়াল মেশিন অন্তর্ভুক্ত করুন)

.bash-প্রোফাইল

alias vm="ssh vagrant@127.0.0.1 -p 2222"

database.php

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', '127.0.0.1'),
        'database'  => env('DB_DATABASE', 'homestead'),
        'username'  => env('DB_USERNAME', 'homestead'),
        'password'  => env('DB_PASSWORD', 'secret'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

প্রান্তিক

vm

vagrant@homestead:~/Code/projectFolder  php artisan migrate:install

1

যদি এখনও কেউ উত্তরটি খুঁজছেন, কেবল আপনার .env ফাইলটি পরীক্ষা করুন। কিছু কারণে লারাভেল একটি .env.example ফাইল তৈরি করুন, সুতরাং এই উত্তরগুলি আমার পক্ষে কার্যকর হয়নি। .Env.example কে .env এ পুনরায় নামকরণ করার জন্য আমি আমার সমস্যা স্থির করেছি


এই সমস্যার কোনও একক সঠিক উত্তর নেই কারণ বিভিন্ন ধরণের ত্রুটি তৈরি করা যেতে পারে। এটি তাদের মধ্যে একটি, যেমন .mv ফাইলটি কোনও দূরবর্তী সার্ভারে অনুলিপি করতে ব্যর্থ হয়। সুতরাং সার্ভারে .env ফাইলটি যাচাই করার জন্য আপনি কোয়েরিটি চালনার চেষ্টা করছেন যেখানে এটি উভয়টি বিদ্যমান রয়েছে এবং একটি সংযোগ করার জন্য প্রয়োজনীয় তথ্য রয়েছে তা নিশ্চিত করে নিন।
পিটারকোলস

1

এটি আমার সাথে ঘটেছিল কারণ মাইএসকিউএল চলছিল না। মাইএসকিউএল শুরু করতে ব্যর্থ হচ্ছিল কারণ আমার অনুপস্থিত ছিল/usr/local/etc/my.cnf.d/ ডিরেক্টরি ছিল।

এটি আমার /usr/local/etc/my.cnfকনফিগারেশন ফাইল দ্বারা গ্লোব অন্তর্ভুক্ত হিসাবে প্রয়োজনীয় ছিল (include /usr/local/etc/my.cnf.d/*.cnf )।

চলমান mkdir /usr/local/etc/my.cnf.d, এবং তারপরে মাইএসকিউএল শুরু করে সমস্যাটি স্থির করে।


1

আমার ক্ষেত্রে, আমি আমার ম্যাক টার্মিনালে পিএইচপি কারিগর মাইগ্রেট চালাচ্ছিলাম, যখন আমাকে ভ্যাব্র্যান্টে প্রবেশ করতে এবং সেখান থেকে চালানোর দরকার হয়েছিল। আশা করি যে কাউকে মাথা ব্যথা করতে সহায়তা করে।


1

ডকার এবং মাইএসকিউএল পরিষেবা নামটি dbডকার_কম্পোজ.আইএমএল ফাইলটিতে ব্যবহার করার ক্ষেত্রে আমার একই সমস্যা ছিল :

আমি .envফাইলটিতে নিম্নলিখিতগুলি যুক্ত করেছি :

DB_HOST=db

আপনার আশ্বাসও দেওয়া উচিত যে আপনার হোস্ট পিএইচপি অ্যাপ থেকে আবিষ্কারযোগ্য।

এটি এই কারণে হয়েছিল যে পিএইচপি সংযোগ করতে কোন হোস্টটি ব্যবহার করবে তা নির্ধারণ করতে পারেনি।


0

ভার্চুয়ালম্যাচিন ব্যবহার করার সময় নিশ্চিত হয়ে নিন যে আপনি সেই মেশিনে প্রবেশ করেছেন এবং আপনার অ্যাপ ফোল্ডারে নেভিগেট করেছেন এবং সেখান থেকে পিএইচপি কারিগর মাইগ্রেট কমান্ডটি কল করুন।


0

ক্ষেত্রে, আমি সহজভাবে ব্যবহার করব

vagrant up

পরিবর্তে

homestead up

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


0

এই সমস্ত উত্তর ভারী উত্তোলনের মত মনে হচ্ছে ...

আমি সবেমাত্র একটি .envফাইল তৈরি করেছি ; আমার bootstrap/app.phpফাইল সম্পাদনা করেছে , এবং নিম্নলিখিত লাইনটি uncommented ...

Dotenv::load(__DIR__.'/../');

আশা করি এটি কাউকে সাহায্য করবে


0

যে কেউ লার্যাভলে না হয়ে একটি নতুন ডিবি সংযোগ তৈরির চেষ্টা করছেন তবে টার্মিনাল থেকে পিডিও চালানোর জন্য উত্তর চাইছেন b এটি আপনার জন্য সহায়ক হবে। এবং আপনি এটি আপনার জন্য সর্বোত্তম কাজ করতে অশোধক করতে পারেন।

<?php

class db
{
   private $DBHOST = 'localhost'; // you don't need 127.0.0.1
   private $DRIVER = 'mysql';
   private $PORT   = '8888'; // database port. 8888 is mine
   private $DB     = 'example-db';
   private $PASS   = 'example-pass';
   private $USER   = 'root';
   private $SOCKS  = ''; // can fill this or leave blank.


   // - connect (dummy connection)
   private function con()
   {
       if ($this->SOCKS == '')
       {
           // run shell command to get 
           $socks = shell_exec('netstat -ln | grep mysql');
           $socks = trim(substr($socks, strpos($socks, '/')));

           $this->SOCKS = strlen($socks) > 0 ? ';unix_socket='.$socks : '';
       }
       else
       {
          $this->SOCKS = ';unix_socket='.$this->SOCKS;
       }

       $dsn = $this->DRIVER.':host='.$this->DBHOST.';dbname='.$this->DB;

       // add socks
       $dsn .= $this->SOCKS;

       // add port
       $dsn .= (strlen($this->PORT) > 0) ? ';port='.$this->PORT : '';

       // extablish connection
       $con = new PDO($dsn, $user, $pass);

       // return PDO instance.
       return $con;
   }
   // - ends here

   // now you can call $this->con() within class to use connection 
   // would run fine on any terminal

} 

আশা করি এটা সাহায্য করবে!


0

আমার ক্ষেত্রে আমাকে বুটস্ট্র্যাপ / ক্যাশে ফোল্ডারটি সরিয়ে আবার চেষ্টা করতে হয়েছিল।

আমার সেন্টারিও ছিল সার্ভার স্থানান্তরের পরে।

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