Saya percaya bahwa saya telah berhasil menyebarkan situs saya (sangat mendasar) ke fortrabbit, tetapi segera setelah saya terhubung ke SSH untuk menjalankan beberapa perintah (seperti php artisan migrate
atau php artisan db:seed
) saya mendapatkan pesan kesalahan:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
Pada titik tertentu migrasi pasti berhasil, karena meja saya ada di sana - tetapi ini tidak menjelaskan mengapa itu tidak berfungsi untuk saya sekarang.
Jawaban:
Pesan kesalahan menunjukkan bahwa koneksi MySQL melalui soket dicoba (yang tidak didukung).
Dalam konteks Laravel (pengrajin), Anda mungkin ingin menggunakan lingkungan yang berbeda / benar. Misalnya:
php artisan migrate --env=production
(atau lingkungan apa pun). Lihat di sini .sumber
Saya memiliki masalah yang sama persis. Tidak ada solusi di atas yang berfungsi untuk saya. Saya memecahkan masalah dengan mengubah "host" di file /app/config/database.php dari "localhost" menjadi "127.0.0.1".
Tidak yakin mengapa "localhost" tidak berfungsi secara default, tetapi saya menemukan jawaban ini dalam pertanyaan serupa yang diselesaikan di posting symfony2. https://stackoverflow.com/a/9251924/1231563
Pembaruan: Beberapa orang bertanya mengapa perbaikan ini berhasil, jadi saya telah melakukan sedikit riset tentang topik ini. Tampaknya mereka menggunakan jenis koneksi berbeda seperti yang dijelaskan dalam posting ini https://stackoverflow.com/a/9715164/1231563
Masalah yang muncul di sini adalah bahwa "localhost" menggunakan soket UNIX dan tidak dapat menemukan database di direktori standar. Namun "127.0.0.1" menggunakan TCP (Transmission Control Protocol), yang pada dasarnya berarti dijalankan melalui "internet lokal" pada komputer Anda yang jauh lebih dapat diandalkan daripada soket UNIX dalam kasus ini.
sumber
localhost
tidak bekerja dan127.0.0.1
melakukan ??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.htmlSaya mendapat masalah yang sama dan saya menjalankan Mac OS X 10.10 Yosemite. Saya telah mengaktifkan Server Apache dan PHP yang sudah dilengkapi dengan OS. Lalu saya baru saja mengkonfigurasi perpustakaan mCrypt untuk memulai. Setelah itu ketika saya bekerja dengan model dan DB saya mendapat kesalahan:
Alasan saya menemukan ini hanya karena PHP dan MySQL tidak dapat terhubung sendiri. Untuk memperbaiki masalah ini, saya mengikuti langkah-langkah berikut:
Buka terminal dan hubungkan ke mysql dengan:
Ini akan menanyakan kata sandi terkait. Kemudian setelah Anda mendapatkan mysql promt ketik perintah selanjutnya:
Anda akan mendapatkan sesuatu seperti ini:
Pertahankan nilai baris terakhir:
Di
laravel
folder proyek Anda , cari file database.php di mana Anda mengkonfigurasi parameter koneksi DB. Di bagian mysql tambahkan baris berikutnya di akhir:Anda harus memiliki sesuatu seperti ini:
Sekarang hanya simpan perubahan, dan muat ulang halaman dan itu harus bekerja!
sumber
/Applications/MAMP/tmp/mysql/mysql.sock
Saya menemukan
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
kesalahan karena alasan yang berbeda. Saya baru saja selesai membangun tumpukan LAMP baru di Ubuntu 12.04 dengan Apache 2.4.7, PHP v5.5.10 dan MySQL 5.6.16. Saya memindahkan situs saya kembali dan memecat mereka. Tapi, saya tidak dapat memuat situs berbasis Laravel 4.2.x saya karena hal di[PDOException]
atas. Jadi, saya memeriksaphp -i | grep pdo
dan memperhatikan baris ini:Tapi, di file /etc/my.cnf saya sebenarnya ada di
/var/run/mysqld/mysqld.sock
.Jadi, saya membuka php.ini saya dan menetapkan nilai untuk
pdo_mysql.default_socket
:Kemudian, saya memulai kembali apache dan memeriksa
php -i | grep pdo
:Itu memperbaikinya bagi saya.
sumber
Jawaban dari @stuyam memecahkan masalah "Tidak ada file atau direktori" bagi saya
Tapi kemudian saya mengalami kesalahan "Sambungan ditolak". Jika ada yang memiliki masalah yang sama, solusi saya untuk ini adalah memperbarui file app / config / local / database.php sehingga portnya adalah 8889:
sumber
'port' => '33060'
tetapi jawaban ini membuat saya di sana!Jika Anda menggunakan Laravel Homestead, pastikan Anda memanggil perintah di server.
Kemudian cukup cd ke direktori yang benar dan jalankan perintah Anda di sana.
sumber
source ~/.zshrc
2.homestead up --provision
3.homestead ssh
vagrant ssh
dalam kasus sayaDalam kasus saya, saya tidak punya masalah sama sekali, hanya lupa untuk memulai layanan mysql ...
sumber
Mamp pengguna aktifkan opsi Izinkan akses jaringan ke MYSQL
sumber
Tambahkan path mysql.sock di file database.php seperti contoh di bawah ini
Cukup
sumber
Ini bekerja setelah saya mengubah dari
DB_HOST=localhost
keDB_HOST=127.0.0.1
file .envsumber
localhost
tidak berhasil?Ini karena PDO memperlakukan host "localhost" secara khusus:
(dari http://php.net/manual/en/ref.pdo-mysql.connection.php )
Mengubah localhost ke 127.0.0.1 akan "memaksa" penggunaan TCP.
Catatan: mysqli_connect berfungsi baik dengan localhost.
sumber
Membangun jawaban dari @dcarrith ...
Alih-alih mengedit file konfigurasi, saya membuat alias di lokasi yang PHP cari yang terhubung ke mysql.sock nyata. ( sumber )
Jalankan saja kedua perintah ini (tidak perlu restart):
sumber
Langkah 1
Temukan path ke unix_socket Anda, untuk melakukannya jalankan saja
netstat -ln | grep mysql
Anda harus mendapatkan sesuatu seperti ini
Langkah 2
Ambil itu dan tambahkan di param unix_socket Anda
Semoga ini bisa membantu !!
sumber
Saya menjalankan MAMP Pro dan memiliki masalah yang sama ketika mencoba untuk bermigrasi (membuat tabel db). Mencoba beberapa saran yang disebutkan juga tetapi tidak melakukannya untuk saya.
Jadi, cukup (setelah satu jam googling), saya menambahkan dua hal ke /config/database.php.
Sekarang berfungsi dengan baik!
sumber
Periksa port Anda dengan cermat. Dalam kasus saya itu adalah 8889 dan saya menggunakan 8888. ubah "DB_HOST" dari "localhost" menjadi "127.0.0.1" dan sebaliknya
sumber
Saya punya masalah ini ketika saya menjalankan aplikasi saya menggunakan wadah buruh pelabuhan.
Solusinya adalah meletakkan nama wadah layanan MySQL yang saya gunakan di
docker_compose.yml
DB_HOST. Dalam kasus saya, itu adalahdb
:Semoga ini bisa membantu.
sumber
Pada Laravel 5 nama pengguna basis data dan kata sandi masuk dalam file .env yang ada di direktori proyek, misalnya
Seperti yang Anda lihat, variabel-variabel lingkungan ini mengesampingkan string 'tempa' di sini sehingga mengubahnya tidak berpengaruh:
Informasi lebih lanjut ada di sini https://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables
sumber
Saya mengalami masalah ini ketika menjalankan PHPUnit di Elixir / Gulp, dan Homestead sebagai lingkungan Vagrant saya.
Dalam kasus saya saya edit file .env dari
DB_HOST=localhost
keDB_HOST=192.168.10.10
mana192.168.10.10
adalah IP dari saya tuan Vagrant / Homestead.sumber
Coba sambungkan ke localhost:
Coba sambungkan ke 127.0.0.1:
OK, cukup beri komentar / hapus pengaturan berikut dari my.cnf (di OS X 10.5:)
/opt/local/etc/mysqlxx/my.cnf
untuk mendapatkan:Tentu saja, hentikan dan mulai MySQL Server.
sumber
Saya memiliki masalah serupa dalam mengakses situs web Drupal saya. Saya memperbaikinya dengan membuka baris perintah, dan me-restart server atau layanan MySQL saya:
Ini seharusnya bekerja. Jika tidak, mulai ulang server web Anda:
Itu sudah cukup. Semoga berhasil untuk lingkungan lain juga. Perhatikan bahwa perintah ini umumnya memerlukan hak pengguna super.
sumber
Jika Anda menggunakan Laravel Homestead, berikut adalah pengaturannya
(termasuk Mesin Vagrant-Virtual)
profil .bash
database.php
Terminal
sumber
Jika ada yang masih mencari jawabannya, cukup periksa file .env Anda. Untuk beberapa alasan, laravel membuat file .env.example, jadi semua jawaban ini tidak berfungsi untuk saya. Saya memperbaiki masalah saya dengan mengubah nama .env.example menjadi .env
sumber
Ini terjadi pada saya karena MySQL tidak berjalan. MySQL gagal memulai karena saya punya yang hilang
/usr/local/etc/my.cnf.d/
direktori yang .Ini sedang diminta oleh
/usr/local/etc/my.cnf
file konfigurasi saya sebagai glob termasuk (include /usr/local/etc/my.cnf.d/*.cnf
).Berjalan
mkdir /usr/local/etc/my.cnf.d
, dan kemudian mulai MySQL, perbaiki masalah.sumber
Dalam kasus saya, saya menjalankan php tukang melakukan migrasi di terminal mac saya, ketika saya perlu ssh ke gelandangan dan menjalankannya dari sana. Semoga itu bisa membantu sakit kepala seseorang.
sumber
Saya memiliki masalah yang sama menggunakan nama layanan Docker dan MySQL
db
di file docker_compose.yml:Saya menambahkan berikut ini di
.env
file:Anda juga harus memastikan bahwa host Anda dapat ditemukan dari aplikasi php.
Itu karena PHP tidak tahu host mana yang digunakan untuk menghubungkan.
sumber
Saat menggunakan VirtualMachine pastikan Anda ssh ke mesin itu dan navigasikan ke folder App Anda dan panggil perintah migrasi artisan php dari sana.
sumber
Dalam hal ini, saya hanya menggunakan
dari pada
untuk setup forge larval saya menggunakan homestead. Saya berasumsi ini berarti situs itu dilayani, tetapi server MySQL tidak pernah di-boot. Ketika saya menggunakan perintah terakhir untuk meluncurkan kotak gelandangan saya, kesalahan hilang.
sumber
Semua jawaban ini tampak seperti mengangkat berat ...
Saya baru saja membuat
.env
file; mengeditbootstrap/app.php
file saya , dan menghapus komentar pada baris berikut ...Dotenv::load(__DIR__.'/../');
Semoga ini bisa membantu seseorang
sumber
Bagi siapa pun yang mencoba membuat koneksi db segar bukan pada laravel tetapi bertemu di sini mencari jawaban untuk menjalankan PDO dari Terminal. Ini akan sangat membantu Anda. Dan Anda dapat mengubahnya agar bekerja paling baik untuk Anda.
semoga membantu!
sumber
Dalam kasus saya, saya harus menghapus folder bootstrap / cache dan mencobanya lagi.
Skenario saya adalah setelah migrasi server.
sumber