J'essaie de me connecter à ma base de données MySQL avec le terminal sur mon Apple (avec PHP).
Hier, cela a bien fonctionné, et maintenant j'ai soudainement l'erreur dans le titre.
Le script fonctionne lorsque j'utilise mon navigateur pour l'exécuter (j'ai XAMPP installé), mais Terminal refuse de se connecter à la base de données.
Voici le fichier que j'inclus pour me connecter (le script fonctionne lorsque je ne l'inclus pas, mais il ne se connecte pas à la base de données):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Cela devrait fonctionner, car cela fonctionne avec mon navigateur.
La commande que j'utilise sur le terminal est php scriptname.php
.
localhost
socket, et cela peut être important si vous ne voulez pas la surcharge supplémentaire de l'envoi de paquets au routeur avant d'accéder à la base de données.cd /tmp
puis:sudo ln -s /var/run/mysqld/mysqld.sock mysql.sock
.J'ai également eu cette erreur, mais je n'ai pu la corriger que par la suggestion ici .
Pour résumer, utilisez:
Au lieu de:
La raison en est que "localhost" est un nom spécial pour le pilote MySQL lui faisant utiliser le socket UNIX pour se connecter à MySQL au lieu du socket TCP.
la source
hosts
fichier, il pourrait être manquant ou foiréJ'avais le même problème et voici comment je l'ai résolu:
J'avais ça et ça n'a pas marché:
Je l'ai fait et ça a marché:
Au lieu d'utiliser le serveur mysql, je me suis connecté directement au socket Unix. A travaillé pour moi.
la source
Le socket MySQL est situé, en général, dans
/tmp/mysql.sock
ou/var/mysql/mysql.sock
, mais PHP ne semble probablement pas au bon endroit.Vérifiez où se trouve votre prise avec:
Lorsque la mise à jourb est terminée:
Localisez ensuite votre php.ini:
cela produira quelque chose comme:
Modifiez votre php.ini
Changez les lignes:
où /tmp/mysql.sock est le chemin d'accès à votre socket.
Enregistrez vos modifications et quittez ESC + SHIFT: x
Redémarrez Apache
la source
php.ini.default
enphp.ini
.sudo apachectl restart
Je suis sur XAMPP sur Mac OS X, et la solution de Brian Lowe ci-dessus a fonctionné avec une légère modification .
Le fichier mysql.sock se trouve en fait dans le dossier "/ Applications / xampp / xamppfiles / var / mysql /". J'ai donc dû le relier à la fois dans / tmp et / var / mysql. Je n'ai pas vérifié lequel est utilisé par la ligne de commande PHP, mais cela a fait le correctif, donc je suis heureux :-)
la source
Mac OS X EL Capitan + MAMP Pro Procédez comme suit
Alors fais ça
J'espère que cela vous fera gagner du temps.
la source
mysql.dock
dans le/tmp
qui l'a résolu. Merci!La raison en est que php ne peut pas trouver le chemin correct de
mysql.sock
.Veuillez vous assurer que votre mysql fonctionne en premier.
Ensuite, veuillez confirmer quel chemin est
mysql.sock
situé, par exemple/tmp/mysql.sock
puis ajoutez cette chaîne de chemin d'accès à php.ini:
Enfin, redémarrez Apache.
la source
Lorsque vous rencontrez le problème suivant:
Set valeur « mysql.default_socket » dans votre
/etc/php.ini
àRedémarrez ensuite le service Web dans l'administrateur du serveur
la source
Correction de l'erreur imminente de socket 2002 - qui relie où MySQL place le socket et où OSX pense qu'il devrait être, MySQL le place dans / tmp et OSX le recherche dans / var / mysql le socket est un type de fichier qui permet au client mysql / communication serveur.
puis
source: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
la source
Une autre solution consiste à corriger l'emplacement du socket dans le fichier de configuration php.ini comme ceci:
Bien sûr, le lien symbolique fonctionne aussi, donc c'est une question de préférence celui que vous changez.
la source
Lorsque vous installez php53-mysql en utilisant le port, il renvoie le message suivant qui est la solution à ce problème:
la source
j'avais le même problème
[PDOException] SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type
[ErrorException] Avertissement: PDO :: __ construct (): [2002] Aucun fichier ou répertoire de ce type (essayant de se connecter via unix: ///var/mysql/mysql.sock) dans… htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php
La solution consiste donc à créer un lien symbolique vers le fichier chaussette, résolvant ainsi le problème. Procédez comme suit pour le résoudre:
$ sudo mkdir / private / var / mysql /
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock
source: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql- while- browser - works - fine/
la source
J'ai les mêmes erreurs. Mysql fonctionnait en tant qu'application autonome avant de lancer phpMyAdmin.
Je viens d'arrêter mysql Puis sudo / Applications / XAMPP / xamppfiles / xampp stop sudo / Applications / XAMPP / xamppfiles / xampp start
Cela a bien fonctionné
la source
Je viens d'avoir ce problème, mais il n'est apparu que lors du chargement de certaines pages (d'autres pages fonctionnaient bien). Il s'est avéré que je faisais des appels à MySQL après avoir fermé la connexion avec
mysql_close()
. Donc, comme l'a dit @brucenan: assurez-vous que MySQL est en cours d'exécution lorsque vous l'appelez .la source
Vous pouvez le faire en aliasant simplement le php MAMP sur le terminal Apple:
Exemple:
> phpmamp - v
Vous pouvez maintenant exécuter quelque chose comme:
> phpmamp scriptname.php
Remarque: cela ne sera appliqué que pour la session de terminal en cours.
la source
Puisque vous pouvez utiliser MAMP, changez votre port en 3306 par défaut ou utilisez 127.0.0.1 dans le fichier database.php
Ou avec les paramètres par défaut:
la source
Par défaut, le client mySQL tente de se connecter via un fichier local appelé socket au lieu de se connecter à l'adresse de bouclage (127.0.0.1) pour localhost.
L'emplacement par défaut de ce fichier socket, au moins sur OSX, est
/tmp/mysql.sock
.SOLUTION RAPIDE ET MOINS ÉLÉGANTE
Créez un lien symbolique pour tromper le système d'exploitation en trouvant le bon socket.
SOLUTION APPROPRIÉE
Modifiez le chemin du socket défini dans le
startMysql.sh
fichier dans/Applications/MAMP/bin
.la source