Saya menginstal Drush untuk pertama kalinya (jadi ini mungkin kesalahan konfigurasi) dan saya mencoba memperbarui ke versi inti terbaru dari Drupal.
Drush memberiku kesalahan ini - aku ada di kotak OSX.
dev5:clientnamedirectory my.name$ drush pm-update projects drupal-7.25
<h1>Additional uncaught exception thrown while handling exception.</h1>
<h2>Original</h2><p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in drupal_get_installed_schema_version() (line 155 of /Users/my.name/Sites/proface/includes/install.inc).</p>
<h2>Additional</h2>
<p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in system_list() (line 165 of /Users/my.name/Sites/clientnamedirectory/includes/module.inc).</p><hr />
Drush command terminated abnormally due to an unrecoverable error.
Jawaban:
Ini adalah bagaimana saya menyelesaikannya di macOS:
Sumber: Bekerja dengan Drush on Mamp .
sumber
Dalam konfigurasi database Anda di file settings.php untuk situs Drupal, cobalah mengubah host menjadi 127.0.0.1 alih-alih localhost.
ganti default: 'host' => 'localhost',
dengan: 'host' => '127.0.0.1',
Saya mengalami kesalahan ini pada OS X XAMPP, tetapi solusinya juga harus berlaku di sini. Seperti yang disebutkan Clive, ini adalah masalah koneksi MySQL. Posting ini memiliki lebih banyak masalah mendasar.
sumber
Penjelasan
The PDOException - error 2002 berarti bahwa drush Anda tidak dapat terhubung ke server database MySQL lokal melalui file socket (misalnya
/tmp/mysql.sock
) seperti yang dikonfigurasi dalam Andaphp.ini
.Ini sebenarnya tidak banyak terkait dengan
drush
itu sendiri, itu adalah konfigurasi PHP Anda dan kesalahan itu dapat direproduksi oleh:Memperbaiki
Jika MySQL Anda berfungsi dengan benar, pastikan kedua file ini:
mysql_config --socket
atau:
mysqladmin variables | grep socket
php -i | grep -w default_socket
atau:
php -r 'phpinfo();' | grep -w default_socket
cocok dan menunjuk ke file yang sama dan keduanya ada.
Jika tidak, periksa yang mana yang benar dengan:
kemudian perbaiki masalah dengan salah satu solusi berikut:
buat tautan simbolik untuk menunjuk ke
mysql.sock
soket unix yang berfungsi (untuk MAMP, lihat jawaban Andrew ),misalnya, jika Anda menggunakan MAMP, Anda dapat membuat tautan simbolis ke lokasi default:
jalur yang benar dari Anda
pdo_mysql.default_socket
,mysql.default_socket
ataumysqli.default_socket
di Andaphp.ini
tentukan
unix_socket
disettings.php
dalam$databases
variabel Anda , misPenyelesaian masalah
Kasus tepi lainnya dapat berupa:
Debug dengan XDebug:
echo '<?php xdebug_start_trace("/tmp/foo.log");' > init.php
drush -c init.php ev 'Database::getConnection("default", "default");'
xdebug.show_exception_trace=1
dixdebug.ini
sudo dtruss -fn mysqld
, di Linux denganstrace
sumber
Saya menggunakan MAMP Pro dan memiliki masalah yang sama. Cara termudah yang dapat saya temukan untuk memperbaikinya adalah dengan menambahkan baris berikut ke $ database array Anda di file settings.php.
Secara penuh seharusnya terlihat seperti ini:
Kesalahan persis yang saya dapatkan tampak seperti ini:
Pengecualian tanpa tertangkap tambahan dilemparkan saat menangani pengecualian.
Asli
PDOException: SQLSTATE [HY000] [2002] Tidak ada file atau direktori di drupal_is_denied () (baris 2193 dari ...
Tambahan
PDOException: SQLSTATE [HY000] [2002] Tidak ada file atau direktori di _registry_check_code () (baris 3477 dari ...
Perintah Drush diakhiri secara tidak normal karena kesalahan yang tidak dapat dipulihkan.
sumber
Saya memecahkan ini dengan langkah-langkah berikut, mirip dengan balasan sebelumnya tetapi tidak sama.
Tambahkan symlink:
Temukan php.ini yang digunakan:
Tambahkan pengaturan berikut ke php.ini:
sumber
Ini karena kesalahan konfigurasi dalam konfigurasi PHP / SQL Anda. Di suatu tempat soket yang digunakan server web Anda dan baris perintah menggunakan dikonfigurasi secara berbeda. Saya sarankan memeriksa konfigurasi MySQL Anda untuk melihat apa soket unix digunakan, dan kemudian pastikan nilai yang sama digunakan di semua konfigurasi dan kompilasi php.ini.
Jika Anda tidak dapat memperbaiki konfigurasi, langkah-langkah berikut harus berhasil:
Jika semua ini tampaknya rumit, alternatifnya adalah mengubah host di setting.php dari localhost ke 127.0.0.1. Ini akan membuat situs lebih lambat, tetapi untuk situs pengembangan mungkin tidak terlihat atau penting. Untuk situs produksi, Anda ingin menggunakan soket unix dan harus memilah konfigurasi.
sumber
Menemukan cara yang lebih mudah / alternatif untuk menginstal drush pada Mac:
Instal homebrew dengan menempelkan ini di terminal yang berdiri sendiri
Kemudian tambahkan drush dengan menjalankan yang berikut ini dari terminal yang sama
Menjalankan status drush berjalan dengan baik sekarang.
sumber
Jika Anda bekerja dengan instalasi MySQL.com dari MySQL, Anda hanya perlu mengarahkan PHP di lokasi yang tepat untuk
.sock
file tersebut.Di Anda
php.ini
, tambahkan / ubah dua baris ini:Untuk menemukan lokasi php.ini Anda (mungkin belum ada), gunakan ini
Jika
php.ini
file tersebut belum ada di sana, buatlah.sumber
Setuju dengan jawaban lain bahwa Drupal tidak dapat menemukan soket mysql. Jawaban lain membantu saya tetapi tidak lengkap untuk menginstal dengan layanan resmi Oracle Mysql diinstal. Yaitu, lokasi default dari file mysql.sock. Jadi, inilah rekap jawaban yang saya rekomendasikan tergantung pada use case Anda:
Jika menggunakan mysql seperti yang termasuk dalam paket MAMP resmi, gunakan jawaban @Andrew Alexander:
Untuk Oracle MYSQL resmi:
sumber
Untuk pengaturan MAMP 4, solusinya adalah memeriksa "Buat versi ini tersedia di baris perintah."
sumber
Saya mendapat pesan berikut di terminal:
(MAMP PRO + PHP 7)
Saya memecahkan masalah dengan bantuan instruksi ini
sumber
Saya lupa bahwa mysql lokal saya berjalan pada nomor port yang unik jadi saya bingung mengapa saya mendapatkan ini sampai saya meninjau konfigurasi saya di situs lokal lain.
sumber