Saya mencoba untuk terhubung ke MySQL DB saya dengan Terminal di Apple saya (Dengan PHP).
Kemarin bekerja dengan baik, dan sekarang saya tiba-tiba mendapatkan kesalahan dalam judul.
Script berfungsi ketika saya menggunakan browser saya untuk menjalankannya (saya telah menginstal XAMPP), tetapi Terminal menolak untuk terhubung ke DB.
Berikut adalah file yang saya sertakan untuk terhubung (skrip berfungsi ketika saya tidak menyertakan ini, tetapi kemudian tidak terhubung ke DB):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Itu seharusnya berfungsi, karena itu berfungsi dengan browser saya.
Perintah yang saya gunakan di Terminal adalah php scriptname.php
.
localhost
soket berfungsi, dan mungkin penting jika Anda tidak ingin overhead tambahan mengirim paket ke router sebelum database diakses.cd /tmp
dan kemudian:sudo ln -s /var/run/mysqld/mysqld.sock mysql.sock
.Saya juga memiliki kesalahan ini, tetapi hanya bisa memperbaikinya melalui saran di sini .
Untuk meringkas, gunakan:
Dari pada:
Alasannya adalah bahwa "localhost" adalah nama khusus untuk driver MySQL yang membuatnya menggunakan soket UNIX untuk terhubung ke MySQL, bukan soket TCP.
sumber
hosts
file Anda , mungkin ada yang hilang atau kacauSaya mengalami masalah yang sama dan ini adalah bagaimana saya memperbaikinya:
Saya punya ini dan tidak berhasil:
Saya melakukan ini dan berhasil:
Alih-alih menggunakan server mysql, saya terhubung langsung ke Unix Socket. Bekerja untukku.
sumber
Soket MySQL terletak, secara umum, di
/tmp/mysql.sock
atau/var/mysql/mysql.sock
, tetapi mungkin PHP terlihat di tempat yang salah.Periksa di mana soket Anda dengan:
Ketika pemutakhiran dihentikan:
Kemudian cari php.ini Anda:
ini akan menampilkan sesuatu seperti:
Edit php.ini Anda
Ubah garis:
di mana /tmp/mysql.sock adalah jalur ke soket Anda.
Simpan modifikasi Anda dan keluar dari ESC + SHIFT: x
Mulai ulang Apache
sumber
php.ini.default
menjadiphp.ini
.sudo apachectl restart
Saya menggunakan XAMPP di Mac OS X, dan solusi Brian Lowe di atas bekerja dengan sedikit modifikasi .
File mysql.sock sebenarnya ada di folder "/ Applications / xampp / xamppfiles / var / mysql /". Jadi harus menghubungkannya baik di / tmp dan / var / mysql. Saya belum memeriksa yang mana yang digunakan oleh baris perintah PHP, tapi ini sudah diperbaiki, jadi saya senang :-)
sumber
Mac OS X EL Capitan + MAMP Pro Lakukan ini
Lalu lakukan ini
Semoga ini menghemat waktu Anda.
sumber
mysql.dock
di/tmp
yang menyelesaikannya. Terima kasih!Alasannya adalah bahwa php tidak dapat menemukan jalur yang benar
mysql.sock
.Pastikan mysql Anda berjalan terlebih dahulu.
Kemudian, harap konfirmasikan bahwa jalur mana yang
mysql.sock
berada, misalnya/tmp/mysql.sock
kemudian tambahkan string path ini ke php.ini:
Akhirnya, restart Apache.
sumber
Saat Anda menghadapi masalah berikut:
Tetapkan nilai "mysql.default_socket" di
/etc/php.ini
untukKemudian mulai kembali layanan web di admin server
sumber
Memperbaiki kesalahan soket 2002 yang menjulang - yang menghubungkan tempat MySQL menempatkan soket dan di mana OSX berpikir seharusnya, MySQL meletakkannya di / tmp dan OSX mencarinya di / var / mysql soket adalah jenis file yang memungkinkan klien mysql / komunikasi server.
lalu
sumber: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
sumber
Solusi lain adalah memperbaiki lokasi soket di file konfigurasi php.ini seperti ini:
Tentu saja, symlink berfungsi juga, jadi ini masalah preferensi mana yang Anda ubah.
sumber
Ketika Anda menginstal php53-mysql menggunakan port, ia mengembalikan pesan berikut yang merupakan solusi untuk masalah ini:
sumber
Saya mengalami masalah yang sama
[PDOException] SQLSTATE [HY000] [2002] Tidak ada file atau direktori tersebut
[ErrorException] Peringatan: PDO :: __ construct (): [2002] Tidak ada file atau direktori tersebut (mencoba untuk terhubung melalui unix: ///var/mysql/mysql.sock) di… htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php
Jadi solusinya adalah membuat symlink ke file sock sehingga menyelesaikan masalah. Lakukan hal berikut untuk mengatasinya:
$ sudo mkdir / private / var / mysql /
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock
sumber: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql-while-browser-works-fine/
sumber
Saya mendapat kesalahan yang sama. Mysql dijalankan sebagai aplikasi mandiri sebelum saya memulai phpMyAdmin.
Saya baru saja menghentikan mysql Kemudian sudo / Aplikasi / XAMPP / xamppfiles / xampp stop sudo / Aplikasi / XAMPP / xamppfiles / xampp start
Itu bekerja dengan baik
sumber
Saya baru saja mengalami masalah ini, tetapi hanya muncul saat memuat halaman tertentu (halaman lain berfungsi dengan baik). Ternyata saya melakukan panggilan ke MySQL setelah saya menutup koneksi dengan
mysql_close()
. Jadi, seperti yang dikatakan @brucenan: pastikan MySQL berjalan saat Anda menyebutnya .sumber
Anda dapat melakukannya dengan hanya mengaktifkan php MAMP di terminal Apple:
Contoh:
> phpmamp - v
Sekarang Anda dapat menjalankan sesuatu seperti:
> phpmamp scriptname.php
Catatan: Ini hanya akan diterapkan untuk sesi terminal saat ini.
sumber
Karena Anda mungkin menggunakan MAMP, ubah Port Anda ke default 3306 atau gunakan 127.0.0.1 di database.php
Atau dengan pengaturan default:
sumber
Klien mySQL secara default mencoba untuk terhubung melalui file lokal yang disebut socket daripada menghubungkan ke alamat loopback (127.0.0.1) untuk localhost.
Lokasi default file soket ini, setidaknya pada OSX, adalah
/tmp/mysql.sock
.SOLUSI CEPAT, KURANG ELEGAN
Buat symlink untuk mengelabui OS agar menemukan soket yang benar.
SOLUSI PROPER
Ubah jalur soket yang ditentukan dalam
startMysql.sh
file dalam/Applications/MAMP/bin
.sumber