PDOException SQLSTATE [HY000] [2002] ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว


319

ฉันเชื่อว่าฉันได้ติดตั้งไซต์ (ขั้นพื้นฐาน) ของฉันไปยัง fortrabbit ได้สำเร็จ แต่ทันทีที่ฉันเชื่อมต่อกับ SSH เพื่อเรียกใช้คำสั่งบางอย่าง (เช่นphp artisan migrateหรือphp artisan db:seed) ฉันได้รับข้อความแสดงข้อผิดพลาด:

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

เมื่อถึงจุดหนึ่งการโยกย้ายต้องทำงานเพราะตารางของฉันอยู่ที่นั่น - แต่นี่ไม่ได้อธิบายว่าทำไมตอนนี้มันจึงไม่ทำงานสำหรับฉัน



1
บางครั้งก็เพียงเพราะคุณ havent ติดตั้ง MySQL ยัง
ฮัสซัน Gilak

คำตอบ:


142

ข้อความแสดงข้อผิดพลาดระบุว่ามีการพยายามเชื่อมต่อ MySQL ผ่านซ็อกเก็ต (ซึ่งไม่รองรับ)

ในบริบทของ Laravel (ช่างฝีมือ) คุณอาจต้องการใช้สภาพแวดล้อมที่แตกต่าง / ถูกต้อง เช่น: php artisan migrate --env=production(หรือสภาพแวดล้อมอะไรก็ตาม) ดูที่นี่


1
นี่เป็นวิธีแก้ปัญหาของฉันหนึ่งในนักพัฒนาที่ บริษัท ของเราไม่ได้ใช้ Homestead และเชื่อมต่อกับ mysql ผ่านซ็อกเก็ต ฉันลบการกำหนดค่าซ็อกเก็ตภายในไฟล์ app / database.php ของฉัน แก้ไขปัญหาแล้ว
borislemke

ฉันต้องเปิดใช้งานการขยาย mysqli.so ใน php.ini
Mehulkumar

4
ฉันต้องเพิ่ม "'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'" เพื่อกำหนดค่า / database.php
Ángel Carlos del Pozo Muela

สวัสดีชุมชนฉันได้รับข้อผิดพลาดนี้แม้ว่าฉันไม่ได้ใช้ laravel คุณสามารถดูปัญหาได้ที่นี่คือstackoverflow.com/questions/60796332//
Kiran Patel

655

Laravel 4:เปลี่ยน "host" ในapp/config/database.phpไฟล์จาก "localhost" เป็น "127.0.0.1"

Laravel 5:เปลี่ยน "DB_HOST" ใน.envไฟล์จาก "localhost" เป็น "127.0.0.1"

ฉันมีปัญหาเดียวกันแน่นอน วิธีการแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉัน ฉันแก้ไขปัญหาโดยเปลี่ยน "โฮสต์" ในไฟล์ /app/config/database.php จาก "localhost" เป็น "127.0.0.1"

ไม่แน่ใจว่าทำไม "localhost" ไม่ทำงานตามค่าเริ่มต้น แต่ฉันพบคำตอบนี้ในคำถามที่คล้ายกันซึ่งแก้ไขในโพสต์ symfony2 https://stackoverflow.com/a/9251924/1231563

อัปเดต: บางคนถามว่าทำไมการแก้ไขนี้จึงใช้งานได้ดังนั้นฉันจึงทำการวิจัยเล็กน้อยในหัวข้อ ดูเหมือนว่าพวกเขาใช้ประเภทการเชื่อมต่อที่แตกต่างกันตามที่อธิบายในโพสต์นี้https://stackoverflow.com/a/9715164/1231563

ปัญหาที่เกิดขึ้นที่นี่คือ "localhost" ใช้ซ็อกเก็ต UNIX และไม่สามารถค้นหาฐานข้อมูลในไดเรกทอรีมาตรฐาน อย่างไรก็ตาม "127.0.0.1" ใช้ TCP (Transmission Control Protocol) ซึ่งหมายถึงมันทำงานผ่าน "local internet" บนคอมพิวเตอร์ของคุณซึ่งมีความน่าเชื่อถือมากกว่าซ็อกเก็ต UNIX ในกรณีนี้


3
แปลกที่มันเป็นทางออกสำหรับฉันเช่นกัน แต่ฉันสามารถเชื่อมต่อจากบรรทัดคำสั่งกับ mysql --host = localhost - ที่ใช้งานได้ แต่ไม่ใช่จาก PDO
John

26
ฉันชอบที่จะรู้ว่าทำไมlocalhostไม่ทำงานและ127.0.0.1ไม่?
จัสติน

6
สิ่งนี้ใช้ได้กับฉันในระบบ MAMP ที่ใช้งานไฟล์ php ในบรรทัดคำสั่ง (เทอร์มินัล) มันทำงานเป็นเว็บเพจ แต่ไม่เป็นไฟล์บรรทัดคำสั่งจนกว่าฉันจะเปลี่ยน localhost เป็น '127.0.0.1'
Samuel Fullman

1
@ จัสตินฉันคิดว่าเป็นเพราะ localhost พยายามใช้ซ็อกเก็ตในขณะที่ 127.0.0.1 ใช้ TCP
pebbo

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
x-yuri

94

ฉันมีปัญหาเดียวกันและฉันใช้ Mac OS X 10.10 โยเซมิตี ฉันเปิดใช้งาน Apache Server และ PHP ที่มาพร้อมกับระบบปฏิบัติการแล้ว จากนั้นฉันเพิ่งกำหนด mCrypt ไลบรารี่เพื่อเริ่มต้น หลังจากนั้นเมื่อฉันทำงานกับรุ่นและฐานข้อมูลฉันได้รับข้อผิดพลาด:

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

เหตุผลที่ฉันพบว่าเป็นเพราะ PHP และ MySQL ไม่สามารถเชื่อมต่อตัวเองได้ เพื่อแก้ไขปัญหานี้ฉันทำตามขั้นตอนถัดไป:

  1. เปิด terminal และเชื่อมต่อกับ mysql ด้วย:

    mysql -u root -p
  2. มันจะขอรหัสผ่านที่เกี่ยวข้องกับคุณ จากนั้นเมื่อคุณได้รับ mysql promt ให้พิมพ์คำสั่งถัดไป:

    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โฟลเดอร์โครงการของคุณค้นหาไฟล์database.phpตรงที่คุณกำหนดค่าพารามิเตอร์การเชื่อมต่อฐานข้อมูล ในส่วนmysqlเพิ่มบรรทัดถัดไปในตอนท้าย:

    '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
ทางออกที่ตรงที่สุดถึง Thanx สิ่งนี้ทำให้ฉันใช้งาน Laravel กับ MAMP pro
animaacija

ขอบคุณสำหรับสิ่งนี้. สิ่งนี้ใช้ได้สำหรับฉัน ใช้ OSX 10.10.5 MAMP Pro
marknt15

สิ่งนี้ใช้ได้สำหรับฉันเช่นกันกับ MAMP pro และ OS X 10.11.x จบลงด้วยการเป็น:/Applications/MAMP/tmp/mysql/mysql.sock
Bort ป้ายทะเบียน

1
+1 การใช้ "127.0.0.1" ในการกำหนดค่าแทนที่จะเป็น "localhost" ตามที่ Yamartino กล่าวในคำตอบของเขาทำงานได้ดี แต่ซ็อกเก็ตเร็วกว่าและคำตอบนี้จะช่วยแก้ปัญหาได้ มันเป็นความอัปยศ mysql ปฏิบัติต่อ "localhost" ในลักษณะที่แปลกประหลาดเมื่อ unix_socket ถูกกำหนดไว้แม้ว่า ...
Shautieh

@GregFerrell ใช่มันเป็นเรื่องจริง แต่ก็ดี ... ฉันหวังว่ามันจะมีประโยชน์
alexventuraio

51

ฉันพบ[PDOException] SQLSTATE[HY000] [2002] No such file or directoryข้อผิดพลาดด้วยเหตุผลอื่น ฉันเพิ่งสร้าง LAMP stack ใหม่ล่าสุดบน Ubuntu 12.04 ด้วย Apache 2.4.7, PHP v5.5.10 และ MySQL 5.6.16 ฉันย้ายเว็บไซต์ของฉันกลับมาและไล่พวกเขาขึ้น แต่ฉันไม่สามารถโหลดเว็บไซต์ที่ใช้ Laravel 4.2.x ได้เนื่องจากสิ่งที่[PDOException]กล่าวมา ดังนั้นฉันตรวจสอบ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

จากนั้นฉันรีสตาร์ท apache และตรวจสอบphp -i | grep pdo:

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

นั่นแก้ไขให้ฉัน


นี่คือการแก้ไขที่ใช้งานได้สำหรับฉันปัญหาคือฉันติดตั้ง mysql สองเวอร์ชันและลบออกการเปลี่ยนแปลง 127.0.0.1 ไม่ทำงานหรือเพิ่มถุงเท้าในการตั้งค่าขอบคุณ! @dcarrith
Luis

2
สิ่งนี้ช่วยให้ฉันพบปัญหาของฉัน - ซึ่งเป็นสิ่งที่ฉันใช้กับ OSX ที่รวม php ไม่ใช่ MAMP php binary ดังนั้นตรวจสอบให้แน่ใจว่าคุณใช้ php เวอร์ชันที่ถูกต้องซึ่งชี้ไปยัง php.ini ที่ถูกต้องและอื่น ๆ แน่นอน "doh!" ขณะ
dragonflyesque

43

คำตอบจาก @stuyam แก้ไขปัญหา "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" สำหรับฉัน

คำตอบสั้น ๆ : เปลี่ยน "โฮสต์" ในไฟล์ /app/config/database.php จาก "localhost" เป็น "127.0.0.1"

แต่ฉันมีข้อผิดพลาด "การเชื่อมต่อถูกปฏิเสธ" หากใครมีปัญหาเดียวกันทางออกของฉันคืออัปเดตไฟล์ app / config / local / database.php ดังนั้นพอร์ตคือ 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

หากคุณใช้ Laravel Homestead ตรวจสอบให้แน่ใจว่าคุณกำลังเรียกคำสั่งบนเซิร์ฟเวอร์

homestead ssh

จากนั้นก็ไปที่ไดเร็กตอรี่ที่ถูกต้องแล้วสั่งการของคุณ


2
สิ่งนี้ใช้ได้ผลฉันกำลังเรียกใช้คำสั่งจากคอมพิวเตอร์ของฉันแทนที่จะใช้ ssh ใน VM ก่อนแล้วจึงใช้คำสั่งที่นั่น
cmac

ฉันมักจะลืมขั้นตอนนี้ หึ 1. source ~/.zshrc2. homestead up --provision3.homestead ssh
Marcel

1
vagrant sshในกรณีของฉัน
Marcos Curvello

22

ในกรณีของฉันฉันไม่มีปัญหาเลยแค่ลืมเริ่มบริการ mysql ...

sudo service mysqld start


18

เพิ่มเส้นทาง mysql.sock ในไฟล์ database.php เช่นตัวอย่างด้านล่าง

'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.1at. ไฟล์ env


2
วิธีนี้ใช้ได้ผล คุณมีความคิดเห็นใด ๆ ที่อธิบายว่าทำไมจึงlocalhostไม่ทำงาน
Fusion

1
@ ฟิวชั่นหากคุณใช้งานแอปของคุณภายในคอนเทนเนอร์มันจะเข้าใจ 'localhost' เป็นที่เก็บ 127.0.0.1 บอกให้ใช้โฮสต์ของโฮสต์
deathem Emperor

ฉันมีปัญหาเช่นนี้ไม่สามารถล้างแคชหรือเรียกใช้บริการช่างฝีมือ
Tom Mwenda

17

นี่เป็นเพราะ PDO ปฏิบัติต่อโฮสต์ "localhost" เป็นพิเศษ:

หมายเหตุ: Unix เท่านั้น: เมื่อชื่อโฮสต์ถูกตั้งค่าเป็น "localhost" การเชื่อมต่อกับเซิร์ฟเวอร์จะทำผ่านซ็อกเก็ตโดเมน หาก PDO_MYSQL ถูกคอมไพล์กับ libmysqlclient ตำแหน่งของไฟล์ซ็อกเก็ตจะอยู่ในตำแหน่งที่คอมไพล์ในตำแหน่งของ libmysqlclient หาก PDO_MYSQL รวบรวมกับ mysqlnd ซ็อกเก็ตเริ่มต้นสามารถตั้งค่าผ่านการตั้งค่า pdo_mysql.default_socket

(จากhttp://php.net/manual/th/ref.pdo-mysql.connection.php )

การเปลี่ยน localhost เป็น 127.0.0.1 จะ "บังคับ" การใช้ TCP

หมายเหตุ: mysqli_connect ทำงานได้ดีกับ localhost


12

สร้างคำตอบจาก @dcarrith ...

แทนที่จะแก้ไขไฟล์กำหนดค่าฉันสร้างนามแฝงในตำแหน่งที่ PHP มองว่าเชื่อมต่อกับ mysql.sock จริง (ที่มา )

เพียงแค่เรียกใช้สองคำสั่ง (ไม่จำเป็นต้องรีสตาร์ท):

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

11

ขั้นตอนที่ 1

ค้นหาเส้นทางไปยัง unix_socket ของคุณเพื่อเรียกใช้ netstat -ln | grep mysql

คุณควรได้รับสิ่งนี้

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

ขั้นตอนที่ 2

รับสิ่งนั้นและเพิ่มลงในunix_socketพารามิเตอร์ของคุณ

'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

ฉันกำลังทำงานกับ MAMP Pro และมีปัญหาที่คล้ายกันนี้เมื่อพยายามย้ายข้อมูล (สร้างตาราง db) ลองใช้คำแนะนำที่กล่าวถึงเหล่านี้ด้วย แต่ไม่ได้ทำเพื่อฉัน

ดังนั้นหลังจากผ่าน googling หนึ่งชั่วโมงฉันก็เพิ่มสองสิ่งลงใน /config/database.php

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

ใช้งานได้ดีตอนนี้!


4

ตรวจสอบพอร์ตของคุณอย่างระมัดระวัง ในกรณีของฉันคือ 8889 และฉันใช้ 8888 เปลี่ยน "DB_HOST" จาก "localhost" เป็น "127.0.0.1" และในทางกลับกัน


เยี่ยมมากขอบคุณพอร์ตของฉันคือ 3306 แต่พอร์ตที่แท้จริงของฉันคือ 8889
David

4

ฉันมีปัญหานี้เมื่อฉันเรียกใช้แอปพลิเคชันของฉันโดยใช้คอนเทนเนอร์นักเทียบท่า

วิธีแก้ปัญหาคือใส่ชื่อของบริการ MySQL ที่ฉันใช้ในdocker_compose.ymlDB_HOST ในกรณีของฉันมันเป็นdb:

DB_HOST=db

หวังว่ามันจะช่วย


2

ในฐานะของ Laravel 5 ชื่อผู้ใช้และรหัสผ่านของฐานข้อมูลจะอยู่ในไฟล์. env ที่มีอยู่ในไดเรกทอรีโครงการเช่น

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

ในขณะที่คุณสามารถเห็นตัวแปรสภาพแวดล้อมเหล่านี้กำลังแทนที่สตริง 'forge' ที่นี่เพื่อให้การเปลี่ยนแปลงไม่มีผล:

    '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-environment-detection-and-environment-variables


2

ฉันพบปัญหานี้เมื่อใช้ PHPUnit ใน Elixir / Gulp และ Homestead เป็นสภาพแวดล้อมของ Vagrant ของฉัน

ในกรณีของฉันฉันแก้ไขไฟล์. env จากDB_HOST=localhostไปยังDB_HOST=192.168.10.10ที่192.168.10.10อยู่ IP ของโฮสต์ Vagrant / Homestead ของฉัน


2

พยายามเชื่อมต่อกับ localhost:

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

พยายามเชื่อมต่อกับ 127.0.0.1:

SQLSTATE[HY000] [2002] Connection refused

ตกลงเพียงแค่แสดงความคิดเห็น / ลบการตั้งค่าต่อไปนี้จาก my.cnf (บน OS X 10.5:) /opt/local/etc/mysqlxx/my.cnfเพื่อรับ:

[mysqld]
# skip-networking

แน่นอนหยุดและเริ่มเซิร์ฟเวอร์ MySQL


2

ฉันมีปัญหาคล้ายกันในการเข้าถึงเว็บไซต์ Drupal ฉันแก้ไขโดยเปิดบรรทัดคำสั่งและรีสตาร์ทเซิร์ฟเวอร์ MySQL หรือบริการของฉัน:

service mysqld restart

สิ่งนี้น่าจะใช้ได้ หากไม่เป็นเช่นนั้นให้รีสตาร์ทเว็บเซิร์ฟเวอร์ในพื้นที่ของคุณ:

service httpd restart

นั่นควรจะเพียงพอ หวังว่ามันจะทำงานกับสภาพแวดล้อมอื่น ๆ ได้เช่นกัน โปรดทราบว่าคำสั่งเหล่านี้โดยทั่วไปต้องใช้สิทธิ์ superuser


1

หากคุณใช้ Laravel Homestead นี่คือการตั้งค่า

(รวมเครื่อง Vagrant-Virtual)

.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 ของคุณ ด้วยเหตุผลบางอย่าง laravel สร้างไฟล์. env.example ดังนั้นคำตอบทั้งหมดนี้ใช้ไม่ได้สำหรับฉัน ฉันแก้ไขปัญหาการเปลี่ยนชื่อ. env.example เป็น. env


ไม่มีคำตอบที่ถูกต้องสำหรับคำถามนี้เนื่องจากมีข้อผิดพลาดหลายอย่างที่สามารถทำได้ นี่เป็นหนึ่งในนั้นเนื่องจากไม่สามารถคัดลอกไฟล์. env ไปยังเซิร์ฟเวอร์ระยะไกล ดังนั้นจึงควรตรวจสอบไฟล์. env บนเซิร์ฟเวอร์ที่คุณพยายามเรียกใช้แบบสอบถามเพื่อให้แน่ใจว่ามีอยู่ทั้งสองและมีข้อมูลที่จำเป็นในการเชื่อมต่อ
เตอร์

1

สิ่งนี้เกิดขึ้นกับฉันเพราะ MySQL ไม่ทำงาน MySQL ล้มเหลวในการเริ่มต้นเนื่องจากฉันมี/usr/local/etc/my.cnf.d/ไดเรกทอรีขาดหายไป

/usr/local/etc/my.cnfไฟล์ config ของฉันต้องการไฟล์นี้เนื่องจาก glob รวม ( include /usr/local/etc/my.cnf.d/*.cnf)

เรียกใช้mkdir /usr/local/etc/my.cnf.dแล้วเริ่มต้น MySQL แก้ไขปัญหา


1

ในกรณีของฉันฉันใช้ php artisan migrate บนเครื่อง mac ของฉันเมื่อฉันต้องการ ssh ไปที่คนจรจัดและเรียกใช้จากที่นั่น หวังว่าจะช่วยให้ใครบางคนปวดหัว


1

ฉันมีปัญหาเดียวกันกับการใช้ชื่อบริการ Docker และ MySQL dbในไฟล์ docker_compose.yml:

ฉันได้เพิ่มสิ่งต่อไปนี้ใน.envไฟล์:

DB_HOST=db

คุณควรมั่นใจว่าโฮสต์ของคุณสามารถค้นพบได้จากแอพ php

เป็นเพราะ PHP ไม่ได้คิดว่าจะใช้โฮสต์ใดเชื่อมต่อ


0

เมื่อใช้ VirtualMachine ให้แน่ใจว่าคุณ ssh ลงในเครื่องนั้นและนำทางไปยังโฟลเดอร์แอพของคุณและเรียกคำสั่ง php artisan migrate จากที่นั่น


0

ในกรณีที่ฉันจะใช้

vagrant up

แทน

homestead up

สำหรับการตั้งค่าตัวอ่อนเคลื่อนของฉันโดยใช้ที่อยู่อาศัย ฉันสมมติว่านี่หมายความว่าเว็บไซต์ได้รับการบริการ แต่เซิร์ฟเวอร์ MySQL ไม่เคยบู๊ต เมื่อฉันใช้คำสั่งหลังเพื่อเปิดกล่องคนจรจัดของฉันข้อผิดพลาดก็หายไป


0

คำตอบทั้งหมดเหล่านี้ดูเหมือนจะเป็นการยกของหนัก ...

ฉันเพิ่งสร้าง.envไฟล์ แก้ไขbootstrap/app.phpไฟล์ของฉันและยกเลิกหมายเหตุบรรทัดต่อไปนี้ ...

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

หวังว่านี่จะช่วยใครซักคน


0

สำหรับทุกคนที่พยายามสร้างการเชื่อมต่อฐานข้อมูลใหม่ไม่ได้อยู่ใน laravel แต่ชนที่นี่เพื่อหาคำตอบในการเรียกใช้ PDO จากเทอร์มินัล นี่จะเป็นประโยชน์กับคุณ และคุณสามารถ refactor เพื่อให้ทำงานได้ดีที่สุดสำหรับคุณ

<?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

ในกรณีของฉันฉันต้องลบโฟลเดอร์ bootstrap / cache และลองอีกครั้ง

สถานการณ์ของฉันหลังจากการย้ายเซิร์ฟเวอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.