insertar - php mysql example
Advertencia: mysql_connect():[2002] No existe tal archivo o directorio(intentando conectarse mediante unix:///tmp/mysql.sock) en (16)
Acabo de tener este problema, pero solo aparecía al cargar ciertas páginas (otras páginas funcionaron bien). Resultó que estaba haciendo llamadas a MySQL después de cerrar la conexión con mysql_close()
. Entonces, como dijo @brucenan: asegúrese de que MySQL se esté ejecutando cuando lo llame .
Estoy tratando de conectarme a mi base de datos MySQL con el terminal en mi Apple (con PHP).
Ayer funcionó bien, y ahora de repente me aparece el error en el título.
El script funciona cuando uso mi navegador para ejecutarlo (tengo instalado XAMPP), pero el Terminal se niega a conectarse a la base de datos.
Aquí está el archivo que incluyo para conectar (la secuencia de comandos funciona cuando no lo incluyo, pero luego no se conecta a la base de datos):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Eso debería funcionar, ya que funciona con mi navegador.
El comando que uso en la Terminal es php scriptname.php
.
Arregle el inminente error de socket 2002 - que está enlazando donde MySQL coloca el socket y donde OSX piensa que debería estar, MySQL lo coloca en / tmp y OSX lo busca en / var / mysql el socket es un tipo de archivo que permite al cliente mysql / comunicación del servidor.
sudo mkdir /var/mysql
y entonces
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
fuente: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
Cuando instala php53-mysql usando el puerto, devuelve el siguiente mensaje, que es la solución a este problema:
To use mysqlnd with a local MySQL server, edit /opt/local/etc/php53/php.ini
and set mysql.default_socket, mysqli.default_socket and
pdo_mysql.default_socket to the path to your MySQL server''s socket file.
For mysql5, use /opt/local/var/run/mysql5/mysqld.sock
For mysql51, use /opt/local/var/run/mysql51/mysqld.sock
For mysql55, use /opt/local/var/run/mysql55/mysqld.sock
For mariadb, use /opt/local/var/run/mariadb/mysqld.sock
For percona, use /opt/local/var/run/percona/mysqld.sock
Cuando te enfrentas al siguiente problema:
Error de lanzamiento de PHP "Advertencia: mysql_connect () http: //function.mysql-connect : 2002 No existe tal archivo o directorio (tratando de conectarse a través de unix: ///tmp/mysql.sock)"
Establezca el valor "mysql.default_socket" en su /etc/php.ini
en
"mysql.default_socket = /var/mysql/mysql.sock".
Luego reinicie el servicio web en el administrador del servidor
El socket MySQL se encuentra, en general, en /tmp/mysql.sock
o /var/mysql/mysql.sock
, pero probablemente PHP se ve en el lugar equivocado.
Comprueba dónde está tu zócalo con:
sudo /usr/libexec/locate.updatedb
Cuando el updatedb se termina:
locate mysql.sock
A continuación, busque su php.ini:
php -i | grep php.ini
Esto producirá algo como:
Configuration File (php.ini) Path => /opt/local/etc/php54 Loaded Configuration File => /opt/local/etc/php54/php.ini
Edita tu php.ini
sudo vim /opt/local/etc/php54/php.ini
Cambia las líneas:
pdo_mysql.default_socket=/tmp/mysql.sock mysql.default_socket=/tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock
donde /tmp/mysql.sock es la ruta a su socket.
Guarda tus modificaciones y sal de ESC + SHIFT: x
Reiniciar apache
sudo apachectl stop sudo apachectl start
Estaba teniendo el mismo problema y así es como lo arreglé:
Tuve esto y no funcionó:
$con = mysql_connect(''localhost'', ''root'', ''1234'');
Hice esto y funcionó:
$con = mysql_connect('':/Applications/MAMP/tmp/mysql/mysql.sock'', ''root'', ''1234'');
En lugar de usar el servidor mysql, me conecté directamente a Unix Socket. Trabajó para mi.
Estoy en XAMPP en Mac OS X, y la solución de Brian Lowe anterior funcionó con una ligera modificación .
El archivo mysql.sock está realmente en la carpeta "/ Applications / xampp / xamppfiles / var / mysql /". Así que tuve que vincularlo tanto en / tmp como / var / mysql. No he comprobado cuál es utilizado por la línea de comandos de PHP, pero esto solucionó el problema, así que estoy feliz :-)
sudo su
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock
mkdir /var/mysql
ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock
La razón es que php no puede encontrar la ruta correcta de mysql.sock
.
Por favor, asegúrese de que su mysql se está ejecutando primero.
Luego, confirme qué ruta se encuentra en mysql.sock
, por ejemplo /tmp/mysql.sock
a continuación, agregue esta cadena de ruta de acceso a php.ini:
- mysql.default_socket = /tmp/mysql.sock
- mysqli.default_socket = /tmp/mysql.sock
- pdo_mysql.default_socket = /tmp/mysql.sock
Finalmente, reinicie Apache.
Mac OS X EL Capitan + MAMP Pro Haz esto
cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
Entonces haz esto
cd /tmp
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
Espero que esto te ahorre tiempo.
Otra solución es arreglar la ubicación del socket en el archivo de configuración php.ini de esta manera:
pdo_mysql.default_socket=/tmp/mysql.sock
Por supuesto, el enlace simbólico también funciona, por lo que es una cuestión de preferencia cuál cambiar.
Por alguna razón mysql en OS X obtiene un poco mal la ubicación del archivo de socket requerido, pero afortunadamente la solución es tan simple como configurar un enlace simbólico.
Puede tener un socket (que aparece como un archivo de longitud cero) como /tmp/mysql.sock
o /var/mysql/mysql.sock
, pero una o más aplicaciones lo están buscando en la otra ubicación. Descúbrelo con este comando:
ls -l /tmp/mysql.sock /var/mysql/mysql.sock
En lugar de mover el socket, edite los archivos de configuración y recuerde que debe mantener los archivos editados localmente y alejados de los servidores donde las rutas son correctas, simplemente cree un enlace simbólico para que su Mac encuentre el socket requerido, incluso cuando está buscando en el lugar equivocado !
Si tiene /tmp/mysql.sock
pero no /var/mysql/mysql.sock
entonces ...
cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /tmp/mysql.sock mysql.sock
Si tiene /var/mysql/mysql.sock
pero no /tmp/mysql.sock
entonces ...
cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock
Necesitará permisos para crear el directorio y el enlace, por lo que solo debe prefijar los comandos de arriba con sudo si es necesario.
Puede hacerlo simplemente aliasando el php de MAMP en el terminal de Apple:
alias phpmamp=''/Applications/MAMP/bin/php/php7.0.0/bin/php''
Ejemplo: > phpmamp - v
Ahora puedes ejecutar algo como: > phpmamp scriptname.php
Nota: Esto se aplicará solo para la sesión de terminal actual.
También tuve este error, pero solo pude solucionarlo a través de la sugerencia here .
Para resumir, utilice:
127.0.0.1
En lugar de:
localhost
La razón es que "localhost" es un nombre especial para el controlador MySQL que hace que use el socket UNIX para conectarse a MySQL en lugar del socket TCP.
Tengo los mismos errores. Mysql se estaba ejecutando como una aplicación independiente antes de iniciar phpMyAdmin.
Acabo de detener mysql. Luego sudo / Applications / XAMPP / xamppfiles / xampp stop sudo / Applications / XAMPP / xamppfiles / xampp start
Funcionó bien
Ya que puede usar MAMP, cambie su puerto al predeterminado 3306 o use 127.0.0.1 en la base de datos.php
$db[''default''] = array(
''dsn'' => '''',
''hostname'' => ''localhost'',// leave it for port 3306
''username'' => ''yourUserhere'',
''password'' => ''yourPassword'',
''database'' => ''yourDatabase'',
''dbdriver'' => ''mysqli'',
''dbprefix'' => '''',
''pconnect'' => FALSE,
''db_debug'' => (ENVIRONMENT !== ''production''),
''cache_on'' => FALSE,
''cachedir'' => '''',
''char_set'' => ''utf8'',
''dbcollat'' => ''utf8_general_ci'',
''swap_pre'' => '''',
''encrypt'' => FALSE,
''compress'' => FALSE,
''stricton'' => FALSE,
''failover'' => array(),
''save_queries'' => TRUE
);
O con la configuración por defecto:
$db[''default''] = array(
''dsn'' => '''',
''hostname'' => ''127.0.0.1:8889'',// leave it for port 8889
''username'' => ''yourUserhere'',
''password'' => ''yourPassword'',
''database'' => ''yourDatabase'',
''dbdriver'' => ''mysqli'',
''dbprefix'' => '''',
''pconnect'' => FALSE,
''db_debug'' => (ENVIRONMENT !== ''production''),
''cache_on'' => FALSE,
''cachedir'' => '''',
''char_set'' => ''utf8'',
''dbcollat'' => ''utf8_general_ci'',
''swap_pre'' => '''',
''encrypt'' => FALSE,
''compress'' => FALSE,
''stricton'' => FALSE,
''failover'' => array(),
''save_queries'' => TRUE
);
Yo estaba teniendo el mismo problema
[PDOException] SQLSTATE [HY000] [2002] No existe tal archivo o directorio
[ErrorException] Advertencia: PDO :: __ construct (): [2002] No existe tal archivo o directorio (tratando de conectarse a través de unix: ///var/mysql/mysql.sock) en ... htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php
Entonces, la solución es hacer un enlace simbólico al archivo sock para resolver el problema. Haga lo siguiente para resolverlo:
$ sudo mkdir / private / var / mysql /
$ sudo ln -s /Aplicaciones/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock