2009-12-24 12 views
7

Al utilizar DBD :: mysql con DBI, aparece el siguiente error al intentar conectarme a la base de datos.¿Cómo le digo a DBD :: mysql dónde está mysql.sock?

DBI connect('database=mydb:host=localhost','someuser',...) failed: Can't connect 
    to local MySQL server through socket '/tmp/mysql.sock' (2) at ./myscript.pl line 97 

Sí MySQL está en funcionamiento. El problema es que mysql.sock no está en/tmp.
Conozco la ubicación de mysql.sock y actualmente lo tengo pirateado para que funcione, creé un enlace suave a la ubicación actual del archivo mysql.sock. Preferiría no cambiar la configuración de MySQL, aunque esto probablemente sería lo más fácil de hacer.

¿Hay alguna manera de entrar en DBD :: mysql y configurarlo para buscar mysql.sock en la ubicación correcta?

Respuesta

13

Puede especificar la ubicación de la toma en el método connect

my $dbh = DBI->connect("DBI:mysql:database=dbname;host=localhost;mysql_socket=/path/to/mysql.sock","someuser","somepassword", {'RaiseError' => 1}); 

Para más información, echar un vistazo a la documentación here

+1

Eso es perfecto. Gracias. – bkoch

3
$dbh=DBI->connect("DBI:mysql:database=dbname;mysql_socket=/var/lib/mysql/mysql.sock;user=username;password=password"); 

No es necesario especificar anfitrión ya te estás conectando a un archivo de socket.

Cuestiones relacionadas