Ich versuche, mit dem Terminal auf meinem Apple (mit PHP) eine Verbindung zu meiner MySQL-Datenbank herzustellen.
Gestern hat es gut funktioniert und jetzt bekomme ich plötzlich den Fehler im Titel.
Das Skript funktioniert, wenn ich es mit meinem Browser ausführe (ich habe XAMPP installiert), aber Terminal weigert sich, eine Verbindung zur Datenbank herzustellen.
Hier ist die Datei, die ich zum Herstellen einer Verbindung einbinde (das Skript funktioniert, wenn ich dies nicht einbinde, aber dann keine Verbindung zur Datenbank herstellt):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Das sollte funktionieren, da es mit meinem Browser funktioniert.
Der Befehl, den ich am Terminal verwende, ist php scriptname.php
.
localhost
Socket zum Laufen zu bringen, und es kann von Bedeutung sein, wenn Sie nicht möchten, dass der zusätzliche Aufwand durch das Senden von Paketen an den Router entsteht, bevor auf die Datenbank zugegriffen wird.cd /tmp
und dann :sudo ln -s /var/run/mysqld/mysqld.sock mysql.sock
.Ich hatte auch diesen Fehler, konnte ihn aber nur durch den Vorschlag hier beheben .
Um es zusammenzufassen, verwenden Sie:
Anstatt:
Der Grund dafür ist, dass "localhost" ein spezieller Name für den MySQL-Treiber ist, der den UNIX-Socket verwendet, um eine Verbindung zu MySQL anstelle eines TCP-Sockets herzustellen.
quelle
hosts
Datei, es könnte fehlen oder durcheinander seinIch hatte das gleiche Problem und so habe ich es behoben:
Ich hatte das und es hat nicht funktioniert:
Ich habe das gemacht und es hat funktioniert:
Anstatt den MySQL-Server zu verwenden, habe ich mich direkt mit dem Unix-Socket verbunden. Hat für mich gearbeitet.
quelle
Der MySQL-Socket befindet sich im Allgemeinen in
/tmp/mysql.sock
oder/var/mysql/mysql.sock
, aber wahrscheinlich sieht PHP am falschen Ort aus.Überprüfen Sie, wo sich Ihre Steckdose befindet mit:
Wenn das aktualisierteb beendet wird:
Dann suchen Sie Ihre php.ini:
Dies gibt ungefähr Folgendes aus:
Bearbeiten Sie Ihre php.ini
Ändern Sie die Zeilen:
Dabei ist /tmp/mysql.sock der Pfad zu Ihrem Socket.
Speichern Sie Ihre Änderungen und beenden Sie ESC + SHIFT: x
Starten Sie Apache neu
quelle
php.ini.default
in umphp.ini
.sudo apachectl restart
Ich bin auf XAMPP unter Mac OS X und Brian Lowes obige Lösung hat mit einer geringfügigen Änderung funktioniert .
Die Datei mysql.sock befindet sich tatsächlich im Ordner "/ Applications / xampp / xamppfiles / var / mysql /". Also musste es sowohl in / tmp als auch in / var / mysql verknüpft werden. Ich habe nicht überprüft, welches von der PHP-Befehlszeile verwendet wird, aber dies hat das Problem behoben, daher bin ich glücklich :-)
quelle
Mac OS X EL Capitan + MAMP Pro Tun Sie dies
Dann mach das
Hoffe das spart dir etwas Zeit.
quelle
mysql.dock
in dem/tmp
, was es gelöst hat. Vielen Dank!Der Grund ist, dass PHP nicht den richtigen Pfad von finden kann
mysql.sock
.Bitte stellen Sie sicher, dass Ihre MySQL zuerst ausgeführt wird.
Dann bestätigen Sie bitte, welcher Pfad der ist
mysql.sock
, die sie beispiel/tmp/mysql.sock
Fügen Sie dann diese Pfadzeichenfolge zu php.ini hinzu:
Starten Sie schließlich Apache neu.
quelle
Wenn Sie mit folgendem Problem konfrontiert sind:
Setzen Sie den Wert "mysql.default_socket" in Ihrem
/etc/php.ini
toStarten Sie dann den Webdienst im Serveradministrator neu
quelle
Beheben Sie den drohenden 2002-Socket-Fehler, der verknüpft, wo MySQL den Socket platziert und wo OSX dies für erforderlich hält. MySQL legt ihn in / tmp ab und OSX sucht ihn in / var / mysql. Der Socket ist ein Dateityp, der den MySQL-Client ermöglicht / Server-Kommunikation.
und dann
Quelle: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
quelle
Eine andere Lösung besteht darin, den Socket-Speicherort in der Konfigurationsdatei php.ini wie folgt zu korrigieren:
Natürlich funktioniert der Symlink auch, daher ist es eine Frage der Präferenz, welchen Sie ändern.
quelle
Wenn Sie php53-mysql über den Port installieren, wird die folgende Meldung zurückgegeben, die die Lösung für dieses Problem darstellt:
quelle
Ich hatte das gleiche Problem
[PDOException] SQLSTATE [HY000] [2002] Keine solche Datei oder kein solches Verzeichnis
[ErrorException] Warnung: PDO :: __ construct (): [2002] Keine solche Datei oder kein solches Verzeichnis (versucht, eine Verbindung über Unix herzustellen: ///var/mysql/mysql.sock) in… htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php
Die Lösung besteht also darin, einen Symlink zur Sock-Datei zu erstellen, um das Problem zu beheben. Gehen Sie wie folgt vor, um das Problem zu beheben:
$ sudo mkdir / private / var / mysql /
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock
Quelle: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql-while-browser-works-fine/
quelle
Ich habe die gleichen Fehler. MySQL wurde als eigenständige Anwendung ausgeführt, bevor ich phpMyAdmin startete.
Ich habe gerade mysql gestoppt. Dann starten sudo / Applications / XAMPP / xamppfiles / xampp sudo / Applications / XAMPP / xamppfiles / xampp
Es hat gut funktioniert
quelle
Ich hatte gerade dieses Problem, aber es trat nur beim Laden bestimmter Seiten auf (andere Seiten funktionierten einwandfrei). Es stellte sich heraus, dass ich MySQL anrief, nachdem ich die Verbindung mit geschlossen hatte
mysql_close()
. Also, wie @brucenan sagte: Stellen Sie sicher, dass MySQL läuft, wenn Sie es aufrufen .quelle
Sie können dies tun, indem Sie einfach das MAMP-PHP auf dem Apple-Terminal aliasen:
Beispiel:
> phpmamp - v
Jetzt können Sie so etwas ausführen wie:
> phpmamp scriptname.php
Hinweis: Dies wird nur für die aktuelle Terminalsitzung angewendet.
quelle
Da Sie möglicherweise MAMP verwenden, ändern Sie entweder Ihren Port auf den Standardwert 3306 oder verwenden Sie 127.0.0.1 in der database.php
Oder mit den Standardeinstellungen:
quelle
Der mySQL-Client versucht standardmäßig, eine Verbindung über eine lokale Datei herzustellen, die als Socket bezeichnet wird, anstatt eine Verbindung zur Loopback-Adresse (127.0.0.1) für localhost herzustellen.
Der Standardspeicherort dieser Socket-Datei, zumindest unter OSX, ist
/tmp/mysql.sock
.SCHNELLE, WENIGER ELEGANTE LÖSUNG
Erstellen Sie einen Symlink, um das Betriebssystem zu täuschen, den richtigen Socket zu finden.
RICHTIGE LÖSUNG
Ändern Sie den in der
startMysql.sh
Datei in definierten Socket-Pfad/Applications/MAMP/bin
.quelle